양식 응용 프로그램에 의사 업데이트 함수를 구현하고 콘솔에서 확인

개요



Windows Forms 응용 프로그램에서 Unity Update 함수와 같은 매 프레임 자동 업데이트하는 환경을 구현해 보았습니다.
또한 양식 응용 프로그램에서 콘솔을 사용하는 방법도 이번에 조사했기 때문에 공유

환경



windows10
Visual Studio 2019

구현



프로젝트를 만들 때까지 과거 기사를 참조하십시오.

콘솔을 양식 응용 프로그램으로 구현



1. 프로젝트를 만든 후 먼저 form1을 마우스 오른쪽 버튼으로 클릭하고 코드 표시를 선택하여 코드를 표시합니다.

2. 다음 코드를 입력

Form1.cs
public partial class Form1 : Form
    {
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern bool AllocConsole();
        public Form1()
        {
            InitializeComponent();
            AllocConsole();

            Console.WriteLine("hogehoge");
        }
    }

실행하면 양식과 콘솔 창의 두 가지가 표시되고 Console.WriteLine을 사용할 수 있습니다.


Update 함수 구현



Form1_Activated 이벤트를 추가하고 거기에서 While(true)를 돌리는 방법도 있지만, 방해가 될 것 같기 때문에 이번에는 backgroundWorker를 사용해, 개별적으로 Update 함수를 구현하기로 한다

1. 툴박스에서 'backgroundWorker'를 form1에 D&D하고 더블 클릭하여 backgroundWorker1_DoWork 이벤트 추가

2.backgroundWorker1_DoWork에 다음 코드를 입력

Form1.cs
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            while (!backgroundWorker1.CancellationPending)
            {
                Console.WriteLine("hoge");
            }
        }

3. BackgroundWorker 속성 탭에서 아래 그림과 같이 "WorkerReportsProgress""WorkerSupportsCancellation"의 두 가지를 false에서 true로 변경합니다.


4. FormClosing 이벤트를 추가하고 아래 코드 추가 (자세한 방법은 과거 기사 참조)

Form1.cs
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //スレッドの終了を待機
            backgroundWorker1.CancelAsync();
            Application.DoEvents();
        }

5.Form1 함수에
backgroundWorker1.RunWorkerAsync();

추가하여 완성
일단 namespace 이하의 코드 전체를 실어 둡니다

Form1.cs
public partial class Form1 : Form
    {
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern bool AllocConsole();
        public Form1()
        {
            InitializeComponent();
            AllocConsole();

            backgroundWorker1.RunWorkerAsync();

        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {


            while (!backgroundWorker1.CancellationPending)
            {
                Console.WriteLine("hoge");
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //スレッドの終了を待機
            backgroundWorker1.CancelAsync();
            Application.DoEvents();
        }
    }


실행 결과



hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
...

무례한
이것으로 Unity 같은 감각을 조금이라도 얻을 수 있을지도

참고 URL



콘솔 표시 방법
htps //w w. 우리. jp / b ぉ g / ㄱ t 푸 t-x tst rin g-와 - 안녕하세요 ぇ ぃ ぃ ん ぃ- 샤 rp

좋은 웹페이지 즐겨찾기