代码之家  ›  专栏  ›  技术社区  ›  eugeneK

使用异步方法asp.net?

  •  1
  • eugeneK  · 技术社区  · 14 年前

    我在页面上有两种方法。一个AddMessageToInboxOutbox(params[]),另一个SendNewMessageMail(params[])。

    一旦用户向其他用户发送了一条消息,第一条消息就被添加到数据库中,然后发送到收件人的电子邮件中。有时SMTP负载很重,从中获取答案最多需要5秒钟。我想使用其他线程或其他东西将SendNewMessageMail(params[])与异步调用一起封装起来。我从来没有做过。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Adam Houldsworth    14 年前

    可以使用委托异步调用方法:

    delegate void SendMailAsync(params object[] args);
    
    static void Main()
    {
        SendMailAsync del = new SendMailAsync(SendMail);
        del.BeginInvoke(new object[] { "emailAddress" }, null, null);
    }
    
    static void SendMail(params object[] args)
    {
        // Send
    }
    

    这将使用 ThreadPool 线程池 线程。打电话 EndInvoke 在代理引用上 del

    结束调用 IAsyncResult BeginInvoke 德尔 IAsyncResult公司

    注: 多线程是一种强大的机制,也是一个需要深入学习的课题。由于页面生命周期等原因,将多线程与ASP.NET相耦合可能比WinForms应用程序更复杂。我建议您也从整体上阅读多线程主题。

        2
  •  1
  •   Martin Clarke    14 年前