此时无法启动异步操作

时间:2016-12-27 11:18:16

标签: c# asp.net-mvc asynchronous imap

我在这里只是想在" INBOX"中下载电子邮件。从使用IMAP和ComponentPro .net组件(Asynchronous Task-Based Approach)的服务器,但每当我尝试异步方法时它都会抛出错误。

我已经使用带有同步方法的IMAP下载了Inbox电子邮件,但这需要将近3-4分钟才能下载至少80多封电子邮件,所以我想尝试使用异步方法对此进行任何建议,因为我是第一次尝试异步方法

错误:

  

此时无法启动异步操作。异步操作只能在异步处理程序或模块中启动,或者在页面生命周期中的某些事件中启动。

控制器代码:

     public ActionResult ImportEmailDemo()
    {
        var sImportedEmails = ARepository.ImportEmailForDemo();
        return null;
    }

存储库代码:

    public async Task<string> ImportEmailForDemo()
    {
        //Async
        // Create a new instance of the Imap class.
        Imap client1 = new Imap();

        // Connect to the server.
        client1.Connect("Server Address");

        // Or you can specify the IMAP port with 
        // client.Connect("myserver", 143); 

        // Login to the server.
        client1.Authenticate("EmailID", "Password");


        // Select 'INBOX' mailbox.
        client1.Select("INBOX");

        // Download a mail message with sequence number 1.

        ComponentPro.Net.Mail.MailMessage msg = await client1.DownloadMailMessageAsync(1);

        // ...

        Console.WriteLine("Message downloaded successfully.");
        Console.WriteLine("Message ID: {0}, Subject: {1}", msg.MessageIdentifier, msg.Subject);

        // Disconnect.
        client1.Disconnect();
        return null;
    }

我尝试了不同的方法来解决互联网上的错误,但没有任何方法可以帮助我,任何人都可以帮助我。 干杯!!

1 个答案:

答案 0 :(得分:2)

  

我已经使用带有同步方法的IMAP下载了Inbox电子邮件,但这需要将近3-4分钟才能下载至少80多封电子邮件,所以我想尝试异步方法

异步不会更快。

  

此时无法启动异步操作。

当您的代码在同步处理程序中启动异步操作时,会发生此错误。您应该使用WaitResult;相反,您需要await返回的任务,它会生成该方法async等,直到您的处理程序更改为异步。

但如上所述,使用async无论如何都不会让它更快。