|
分類:[C# (Windows)]
お世話になっております。
System.Threading.Timerで一定間隔で処理を行わせようとしています。
ソリューソン構成を「Debug」時は問題なく動作するのですが、「Release」
時は途中でタイマイベントが発生しなくなります。
私の環境ではループで17回目にタイマイベントが呼ばれなくなります。
タイマイベントを発生しなくなる現象を解消するにはどのように記述
すればよいのでしょうか?
アドバイス等ご教授お願いします。
(Visual Studio 2005 C#)
-------------
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Thread tThread;
private void Form1_Load(object sender, EventArgs e)
{
tThread = new Thread(new ThreadStart(AAA));
tThread.IsBackground = true;
tThread.Start();
}
public void AAA()
{
AutoResetEvent autoEvent = new AutoResetEvent(false);
StatusChecker statusChecker = new StatusChecker();
TimerCallback timerDelegate = new TimerCallback(statusChecker.CheckStatus);
System.Threading.Timer stateTimer = new System.Threading.Timer(timerDelegate, autoEvent, 0, 100);
int i = 0;
while (true)
{
SetText("### i:" + (i++).ToString() + Environment.NewLine);
autoEvent.WaitOne();
}
}
delegate void SetTextCallback(string text);
public void SetText(string text)
{
if (this.richTextBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.richTextBox1.AppendText(text);
}
}
}
class StatusChecker
{
// This method is called by the timer delegate.
public void CheckStatus(Object stateInfo)
{
AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
Debug.WriteLine("{0} Checking status",
DateTime.Now.ToString("h:mm:ss.fff"));
autoEvent.Set();
}
}
|