Quantcast
Viewing all articles
Browse latest Browse all 8901

フォームアプリケーションに疑似Update関数を実装し,コンソールで確認する

概要

WindowsフォームアプリケーションでUnityのUpdate関数のような毎フレーム自動更新する環境を実装してみました
また,フォームアプリケーションでコンソールを使う方法も今回調査してわかったので共有

環境

windows10
Visual Studio 2019

実装

プロジェクトの作成までは過去記事を参照してください

コンソールをフォームアプリケーションで実装する

1.プロジェクトを作成したらまずform1を右クリックして,コードの表示を選択してコードを表示する

2.以下のコードを入力

Form1.cs
publicpartialclassForm1:Form{[System.Runtime.InteropServices.DllImport("kernel32.dll")]privatestaticexternboolAllocConsole();publicForm1(){InitializeComponent();AllocConsole();Console.WriteLine("hogehoge");}}

実行すると,フォームとコンソールウィンドウの2つが表示され,Console.WriteLineが使用可能になる
Image may be NSFW.
Clik here to view.
image.png

Update関数の実装

Form1_Activatedイベントを追加し,そこでWhile(true)を回す方法もあるが,邪魔になりそうなので今回はbackgroundWorkerを使用し,個別にUpdate関数を実装することにする

1.ツールボックスから「backgroundWorker」をform1上にD&Dし,ダブルクリックしてbackgroundWorker1_DoWorkイベントを追加する

2.backgroundWorker1_DoWorkに以下のコードを入力

Form1.cs
privatevoidbackgroundWorker1_DoWork(objectsender,DoWorkEventArgse){while(!backgroundWorker1.CancellationPending){Console.WriteLine("hoge");}}

3.BackgroundWorkerのプロパティタブで下図のように「WorkerReportsProgress」「WorkerSupportsCancellation」の2つをfalseからtrueに変更する
Image may be NSFW.
Clik here to view.
image.png

4.FormClosingイベントを追加し,下記コードを追加(詳しいやり方は過去記事参照)

Form1.cs
privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse){//スレッドの終了を待機backgroundWorker1.CancelAsync();Application.DoEvents();}

5.Form1関数に

backgroundWorker1.RunWorkerAsync();

を書き加えて完成
一応namespace以下のコード全体を載せておきます

Form1.cs
publicpartialclassForm1:Form{[System.Runtime.InteropServices.DllImport("kernel32.dll")]privatestaticexternboolAllocConsole();publicForm1(){InitializeComponent();AllocConsole();backgroundWorker1.RunWorkerAsync();}privatevoidbackgroundWorker1_DoWork(objectsender,DoWorkEventArgse){while(!backgroundWorker1.CancellationPending){Console.WriteLine("hoge");}}privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse){//スレッドの終了を待機backgroundWorker1.CancelAsync();Application.DoEvents();}}

実行結果

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

失礼しました
これでUnityっぽい感覚を少しでも得られるかも

参考URL

コンソールの表示方法
https://www.wareko.jp/blog/output-text-string-to-console-window-with-windows-form-application-in-c-sharp


Viewing all articles
Browse latest Browse all 8901

Trending Articles