Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任务获取任务结果时出现问题(无法将System.Threading.Task.Task隐式转换为字符串[])_C# - Fatal编程技术网

C# 任务获取任务结果时出现问题(无法将System.Threading.Task.Task隐式转换为字符串[])

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) { /

函数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)
{
    // 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);
    }
}