相关疑难解决方法(0)

Task.WaitAll冻结应用程序C#

我想尝试Threading.Task(C#)并行运行一些工作.在这个简单的例子中,我有一个带进度条和按钮的表单.单击时,将调用RunParallel函数.没有Task.WaitAll()它似乎运行良好.但是,使用WaitAll语句,表单显示并且没有任何反应.我不明白我在下面的设置中做错了什么.提前致谢.

public partial class MainWindow : Form
{
    public delegate void BarDelegate();
    public MainWindow()
    {
    InitializeComponent();
    }
    private void button_Click(object sender, EventArgs e)
    {
        RunParallel();
    }
    private void RunParallel() {
        int numOfTasks = 8;
        progressBar1.Maximum = numOfTasks;
        progressBar1.Minimum = 0;
        try
        { 
            List<Task> allTasks = new List<Task>();
            for (int i = 0; i < numOfTasks; i++)
            {
                allTasks.Add(Task.Factory.StartNew(() => { doWork(i); }));
            }
            Task.WaitAll(allTasks.ToArray());
        }
        catch { }  
    }
    private void doWork(object o1)
    {
        // do work...
        // then
        this.Invoke(new …
Run Code Online (Sandbox Code Playgroud)

c# task task-parallel-library

3
推荐指数
1
解决办法
4242
查看次数

标签 统计

c# ×1

task ×1

task-parallel-library ×1