C# 任务获取任务结果时出现问题(无法将System.Threading.Task.Task隐式转换为字符串[])
函数grab是完全同步的,并返回一个字符串数组您正在检查C# 任务获取任务结果时出现问题(无法将System.Threading.Task.Task隐式转换为字符串[]),c#,C#,函数grab是完全同步的,并返回一个字符串数组您正在检查x任务的结果,该任务可以与t相同,也可以是Task.Delay(TimeSpan.FromSeconds(3))的结果(前提是等待它)。您应该能够从t获得结果: Task t = new Task(() => grabber.grab(link)); var x = Task.WhenAny(t, Task.Delay(TimeSpan.FromSeconds(3))); if (x.Result != null) { /
x
任务的结果,该任务可以与t
相同,也可以是Task.Delay(TimeSpan.FromSeconds(3))的结果
(前提是等待它)。您应该能够从t
获得结果:
Task t = new Task(() => grabber.grab(link));
var x = Task.WhenAny(t, Task.Delay(TimeSpan.FromSeconds(3)));
if (x.Result != null)
{
// error cannot implicitly convert System.Threading.Task.Task to string[]
string[] result = x.Result;
foreach (string item in result)
{
list.Add(item);
}
}
Task t=新任务(()=>grabber.grab(link));
//^^^^^^^^^^^还定义了t.结果应该包含的内容
var x=等待任务时间(t,任务延迟(时间跨度从秒(3));
如果(x==t){//请确保Task.when返回了t任务
{
string[]result=t.result;//获取t的结果,而不是x
foreach(结果中的字符串项)
{
列表。添加(项目);
}
}
创建了一个可复制的小示例完全忘记了我需要输入任务返回的内容谢谢
Task<string[]> t = new Task<string[]>(() => grabber.grab(link));
// ^^^^^^^^ also defining what the t.Result should contain
var x = await Task.WhenAny(t, Task.Delay(TimeSpan.FromSeconds(3)));
if (x == t){ // make sure that Task.WhenAny returned the t Task
{
string[] result = t.Result; // get t's Result, not x
foreach (string item in result)
{
list.Add(item);
}
}