相关疑难解决方法(0)

如何在没有等待的情况下在C#中安全地调用异步方法

我有一个async不返回任何数据的方法:

public async Task MyAsyncMethod()
{
    // do some stuff async, don't return any data
}
Run Code Online (Sandbox Code Playgroud)

我从另一个返回一些数据的方法调用它:

public string GetStringData()
{
    MyAsyncMethod(); // this generates a warning and swallows exceptions
    return "hello world";
}
Run Code Online (Sandbox Code Playgroud)

MyAsyncMethod()没有等待的情况下进行呼叫会导致" 因为此呼叫未被等待,当前方法在呼叫完成之前继续运行 "在visual studio中发出警告.在该警告的页面上,它指出:

只有当您确定不想等待异步调用完成并且被调用的方法不会引发任何异常时,才应考虑禁止警告.

我确定我不想等待电话完成; 我不需要或没有时间.但这一呼吁可能引发例外.

我偶然发现了这个问题几次,我确信这是一个必须有共同解决方案的常见问题.

如何在不等待结果的情况下安全地调用异步方法?

更新:

对于那些建议我等待结果的人来说,这是响应我们的Web服务(ASP.NET Web API)上的Web请求的代码.在UI上下文中等待保持UI线程空闲,但是在Web请求调用中等待将在响应请求之前等待任务完成,从而无缘无故地增加响应时间.

c# exception task task-parallel-library async-await

283
推荐指数
7
解决办法
16万
查看次数

如何在不需要等待当前函数/线程的结果的情况下运行异步任务?

有没有机会避免等待?我们想要的例子如下:

async Task SomeTask()  
{  
   await ChildTask();

   //Then something we want to be done without waiting till "Child Task" finished  
   OtherWork();  
}  

async Task ChildTask()  
{  
   //some hard work   
}  
Run Code Online (Sandbox Code Playgroud)

c# multithreading asynchronous

4
推荐指数
2
解决办法
7021
查看次数