gpt4 book ai didi

c# - 在非异步方法中同步等待任务完成,但任务永远是 WaitingForActivation

转载 作者:行者123 更新时间:2023-12-05 03:17:35 25 4
gpt4 key购买 nike

public void DoStuff()
{
// I want to be able to call the method DoAsynckStuff and wait for the result.
// I know that's not a usual thing to do
// Usually also this will be async method and then just await the result.
// I need this to be something like
var resultTask = DoAsynckStuff();
resultTask.Wait();
var result = resultTask.Result;
//.....
}

public async Task<string> DoAsynckStuff()
{
//...
}

抱歉,我是异步等待的新手。我需要的是我想等待特定异步方法的结果。我不能使方法异步,因为它会导致调用该方法的方法出现一些问题。

我已经在任务上尝试了 Wait 方法,就像在代码示例中一样。但是任务状态会一直是“等待激活”。
我还尝试在 wait 方法之前调用方法 resultTask.Start() 但会抛出

System.InvalidOperationException: Start may not be called on a promise-style task.

result.RunSynchronously() 也会抛出该异常。

我还查看了this article和其他一些但无法得出结果

最佳答案

尝试做这样的事情:

void Main()
{
var resultTask = Task.Run(() => DoAsyncStuff().Result );
resultTask.Wait();

Console.WriteLine(resultTask);
}

// You can define other methods, fields, classes and namespaces here

public async Task<string> DoAsyncStuff()
{
string output = "Task Complete";
Thread.Sleep(2000);
return output;
}

这个输出:

任务完成

enter image description here

关于c# - 在非异步方法中同步等待任务完成,但任务永远是 WaitingForActivation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74091123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com