相关疑难解决方法(0)

如何从C#中的同步方法调用异步方法?

我有一个public async void Foo()方法,我想从同步方法调用.到目前为止,我从MSDN文档中看到的是通过异步方法调用异步方法,但我的整个程序不是使用异步方法构建的.

这甚至可能吗?

以下是从异步方法调用这些方法的一个示例:http://msdn.microsoft.com/en-us/library/hh300224(v = vs.110).aspx

现在我正在研究从同步方法调用这些异步方法.

c# async-await

757
推荐指数
14
解决办法
54万
查看次数

Async Void,ASP.Net和杰出运营计数

我试图理解为什么ASP.Net应用程序中的异步void方法可能导致以下异常,而async Task似乎不会:

System.InvalidOperationException: An asynchronous module or handler 
completed while an asynchronous operation was still pending
Run Code Online (Sandbox Code Playgroud)

我对.NET中的异步世界相对较新,但我觉得我试图通过一些现有资源来运行这个,包括以下所有内容:

从这些资源中,我了解最佳做法是通常返回Task并避免异步void.我也理解async void会在调用方法时增加未完成操作的数量,并在完成时减少它.这听起来至少是我问题答案的一部分.但是,我遗漏的是当我返回Task时会发生什么,以及为什么这样做会让事情变得"有效".

这是一个人为的例子来进一步说明我的问题:

public class HomeController : AsyncController
{
    // This method will work fine
    public async Task<ActionResult> ThisPageWillLoad()
    {
        // Do not await the task since it is meant to be fire and forget
        var task = this.FireAndForgetTask();

        return await Task.FromResult(this.View("Index"));
    }

    private async Task FireAndForgetTask()
    {
        var task = Task.Delay(TimeSpan.FromSeconds(3));
        await task;
    }

    // This …
Run Code Online (Sandbox Code Playgroud)

c# asp.net async-await

47
推荐指数
1
解决办法
2万
查看次数

标签 统计

async-await ×2

c# ×2

asp.net ×1