在我的应用程序中,我使用计时器。在每1秒内部计时器我运行一个长执行代码(例如创建一个表单并在许多打印机中单独打印),同时执行此代码休息应用程序在每个动作中冻结2秒。在不影响我的主要ui线程的情况下运行它的最佳方法是什么?后台工作者,长任务还是新线程?新线程还需要非单核cpu吗?
以下是我的例子。
线程考试:
new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
/* run your code here */
Console.WriteLine("Hello, world");
}).Start();
Backgorundworker示例:
BackgroundWorker.DoWork += new DoWorkEventHandler(bw_DoWork);
任务示例:
//Task should be run on other thread?
Task t = Task.Factory.StartNew(() =>
{
ThreadProcedure();
});
我是c#的新手,我想更多地了解我的应用程序的性能。
如果有其他选择更有效,请现在就让我。
以下是来自后台工作者和计时器的示例:
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (!backgroundWorker1.IsBusy)
{
backgroundWorker1.RunWorkerAsync();
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
MessageBox.Show("Code excecution has been completed!");
timer1.Stop();
}
}