Swa*_*ati 13 c# multithreading timer visual-studio-2008
嗨我已经陷入了一些与计时器相关的问题.希望有人可以帮忙..
Thread thread1 = new Thread(new ParameterizedThreadStart( execute2));
thread1.Start(externalFileParams);
Run Code Online (Sandbox Code Playgroud)
.
public void execute2(Object ob)
{
if (ob is ExternalFileParams)
{
if (boolean_variable== true)
executeMyMethod();//this also executes very well if condition is true
else
{
timer1.enabled = true;
timer1.start();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
5但是没有触发计时器的tick事件
我正在研究VS2008 3.5框架.我已经从工具箱拖动计时器并将其设置Interval为300也试图设置Enabledtrue/false方法timer1_Tick(Object sender , EventArgs e)但是它没有被解雇
任何人都可以建议我做错了什么?
Gab*_*iel 18
您可以尝试以这种方式启动计时器:
添加表单构造函数:
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to 1 second.
aTimer.Interval = 1000;
Run Code Online (Sandbox Code Playgroud)
将此方法添加到Form 1:
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
//do something with the timer
}
Run Code Online (Sandbox Code Playgroud)
按钮点击事件添加:
aTimer.Enabled = true;
Run Code Online (Sandbox Code Playgroud)
此计时器已经过线程化,因此无需启动新线程.
MatíasFidemraizer说的确如此.但是,有一个工作......
如果您的表单上有一个可调用的控件(例如状态栏),则只需调用该控件即可!
C#代码示例:
private void Form1_Load(object sender, EventArgs e)
{
Thread sampleThread = new Thread(delegate()
{
// Invoke your control like this
this.statusStrip1.Invoke(new MethodInvoker(delegate()
{
timer1.Start();
}));
});
sampleThread.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
MessageBox.Show("I just ticked!");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41504 次 |
| 最近记录: |