■ 周辺技術
Forms.Application.DoEvents()
アプリケーションのメッセージ・キューにたまったすべてのWindowsメッセージを処理するためのもの補足
すべてのWindowsメッセージを処理でき、処理中にデータ削除などを行うことができ、動作不整合が発生する可能性がある。 そのため、DoEventsメソッドを呼び出す前に、ボタンを無効化するなど、何らかの対処を行っておく必要がある。参考文献
http://dobon.net/vb/dotnet/vb6/doevents.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/136doevents/doevents.html
Environment.TickCount プロパティ
http://msdn.microsoft.com/ja-jp/library/system.environment.tickcount.aspxシステム起動後のミリ秒単位の経過時間を取得補足
TickCount は、Int32.MaxValue (約 24.9 日) までインクリメントされた後、一旦、Int32.MinValue (負数) になり、再び、ゼロに戻ってから、 24.9 日までインクリメントされる(のでオーバーフローしない)
Form.Created プロパティ
true:フォームが生成されている false:フォームが消された
■ サンプル
例1:ボタン押下後にループを行う
private const int IintervalTime = 1000; private void button1_Click(object sender, EventArgs e) { var time = 0; var oldTime = Environment.TickCount; while (true) { time++; if (oldTime + IintervalTime <= Environment.TickCount) { this.label1.Text = string.Format("Time : {0}", time.ToString()); oldTime = Environment.TickCount; time = 0; } Application.DoEvents(); } }
例2
private const int IintervalTime = 1000; static void Main() { Form1 form = new Form1(); form.Show(); var time = 0; var oldTime = Environment.TickCount; while (form.Created) { time++; if (oldTime + IintervalTime <= Environment.TickCount) { form.label1.Text = string.Format("Time : {0}", time.ToString()); oldTime = Environment.TickCount; time = 0; } Application.DoEvents(); } }