相关疑难解决方法(0)

父任务不等待子任务完成

所以这是我的代码

Task<int[]> parent = Task.Run(() =>
{
    var result = new int[3];

    TaskFactory tf = new TaskFactory(TaskCreationOptions.AttachedToParent, TaskContinuationOptions.ExecuteSynchronously);

    for (int i = 0; i < result.Length; i++)
    {
        int j = i;
        tf.StartNew(() => result[j] = GetRandomNumber(j));
    }

    return result;
});

var finalTask = parent.ContinueWith(parentTask =>
{
    foreach (var i in parentTask.Result)
    {
        Console.WriteLine(i);   
    }
});

finalTask.Wait();
Run Code Online (Sandbox Code Playgroud)

基本上我创建3 Tasks,这是Task被叫父母的孩子(我猜).我要求父任务等待所有三个子任务完成.之后,由于finalTask这种状态,将等待执行finalTask.Wait();.但事情并没有像预期的那样发生.我的意思是应用程序在任何GetRandomNumber调用完成之前退出.这里的代码的某些部分是从书中复制的,该书表明那些父任务应该等待子任务完成,这显然没有发生.我在这里错过了什么吗?

这就是GetRandomNumber所做的

public static int GetRandomNumber(int ii)
{
    Random rand = new Random(); …
Run Code Online (Sandbox Code Playgroud)

.net c# task-parallel-library

7
推荐指数
2
解决办法
3089
查看次数

标签 统计

.net ×1

c# ×1

task-parallel-library ×1