后台工作者,长任务或同时执行许多执行的新线程?

时间:2017-12-10 21:41:13

标签: c#

在我的应用程序中,我使用计时器。在每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();
    }
}

0 个答案:

没有答案