我创建了一个任务并为task.wait()方法提供了等待时间,但是任务没有等到所提供的时间,并且在等待时间之前返回完成状态为false。任务没有等到等待时间
using System;
using System.Threading;
using System.Threading.Tasks;
class Test
{
static void Main(string[] args)
{
for(int i = 0 ; i < 10 ; i++)
{
int localValue = i;
Task.Factory.StartNew(() => ProcessTask(localValue));
}
Console.ReadKey();
}
private static void ProcessTask(int thread)
{
var task = Task<int>.Factory.StartNew(() => GetSomeValue());
task.Wait(2000);
if(task.IsCompleted)
{
Console.WriteLine("Completed Thread: " + thread);
}
else
{
Console.WriteLine("Not Completed Thread " + thread);
}
}
private static int GetSomeValue()
{
Thread.Sleep(400);
return 5;
}
}
更新:
我已经更新了代码。当我运行这个代码时,我得到了以下输出。
只有两个任务都完成了的10,所以我想知道什么是与此代码的问题?
注:我在4.5.2框架中运行此代码。
假如你试图给'Tuple'变量赋一个'int'值,它看起来并不像代码甚至会编译。请提供[mcve]。 (我也建议使用'Task.Run'而不是'TaskFactory.StartNew' ...) –
@ JonSkeet-由于错误的Tuple被添加。我更新了代码。而我正在使用4.0框架,所以运行该方法不可用。 – Girish
这些信息值得一提,因为这几天需要4.0是多么罕见......而且你还没有发布[mcve],这会让你更容易帮助你。 –