Enable System.Form.Timer from Backgroundworker
本文关键字:from Backgroundworker Timer Form System Enable | 更新日期: 2023-09-27 18:29:34
朋友们我有这个问题,希望有人能帮助我,我有Timer.Tick事件和Backgroundworker_dowork事件,我想做的是从后台工作人员启用定时器Tick事件,有人能告诉我怎么做吗?private void ManualController(){
if (TabControl1.SelectedTab == tabPage1 && Globs.DeltaP != 0)
{
if (checkBox6.Checked == true && Globs.DeltaP > 0)
{
do
{
Globs.voltage += 0.1;
data_logger.WriteString("SOURce:VOLTage" + " " + (Globs.voltage.ToString().Replace(",", ".")) + ",(@104)", true);
}
while (Globs.DeltaP == Globs.tolerance);
}
if (checkBox6.Checked == true && Globs.DeltaP < 0)
{
do
{
Globs.voltage -= 0.1;
data_logger.WriteString("SOURce:VOLTage" + " " + (Globs.voltage.ToString().Replace(",", ".")) + ",(@104)", true);
}
while (Globs.DeltaP == (-1) * Globs.tolerance);
}
timer3.Enabled = true;
// timer4.Start();
}
}
这个方法是从后台工作程序调用的,后台工作程序每秒从计时器tick事件调用一次,但在这里我无法从后台工作人员3 启用timer3
我不确定这是否是正确的答案,但请尝试在主窗体上启用计时器,而不是从后台工作人员启用计时器。
尝试:
this.Invoke((MethodInvoker)(() => { timer3.Enabled = true; }));
或
this.Invoke((MethodInvoker)delegate() { timer3.Enabled = true; });
(附言:两行操作相同)
也许这段代码可以帮助您
public Form1()
{
InitializeComponent();
BackgroundWorker worker = new BackgroundWorker();
// init worker
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
Timer timer = new Timer();
// init worker
timer.Tick += new EventHandler(timer_Tick);
}
void timer_Tick(object sender, EventArgs e)
{
}