C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 39 を表示中)
■20216 / )  Thread.Sleepについて
□投稿者/ 組込系の人 (68回)-(2008/06/07(Sat) 16:14:20)

分類:[.NET 全般] 

いつもお世話になっております。
VS2005でC#を使用してます。

以下のプログラムを実行すると、CPUが100%に近い状態になってしまいます。
コメントアウトしてるThread.Sleep(1)を入れると負荷がなくなります。
メインスレッドはループ処理の中でApplication.DoEvents()
しとけばOKと思っていたのですが、何か勘違いをしているのでしょうか?
どなたか教えていただけますでしょうか。よろしくお願いいたします。


private Thread ThreadTest;
private bool fEnd = false;

private void button1_Click(object sender, EventArgs e) {
	ThreadTest = new Thread(RunThread);
	ThreadTest.Start();

	// 処理待ちループ
	while (true) {
		if (fEnd) break;
				
		Application.DoEvents();
		/* ↓↓↓↓↓↓↓↓ */
		//Thread.Sleep(1);
		/* ↑↑↑↑↑↑↑↑ */
	}

	MessageBox.Show("終わり");
}

// スレッドの処理
private void RunThread() {
	DateTime endTime = DateTime.Now.AddMinutes(1);

	while (true) {
		if (endTime < DateTime.Now) break;
		Thread.Sleep(100);
	}
	fEnd = true;
}

返信 編集キー/


管理者用

- Child Tree -