-1

可能重复:
在不使用 Thread.Sleep c# 的情况下延迟发送电子邮件

所以我试图在我的应用程序的 for 循环中启动一个新线程。我根本不熟悉线程,所以我需要一些信息。

我使用这种方法通过 Outlook 发送电子邮件:

public void sendEMailThroughOUTLOOK(string recipient, string subject, string body)
    {

        try
        {

            // Create the Outlook application.
            Outlook.Application oApp = new Outlook.Application();
            // Create a new mail item.
            Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
            // Set HTMLBody. 
            //add the body of the email
            oMsg.Body = body;

            oMsg.Subject = subject;
            // Add a recipient.
            Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;
            // Change the recipient in the next line if necessary.
            Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(recipient);
            oRecip.Resolve();
            // Send.
            oMsg.Send();
            // Clean up.
            oRecip = null;
            oRecips = null;
            oMsg = null;
            oApp = null;
        }//end of try block
        catch (Exception ex)
        {
        }//end of catch

        //end of Email Method
    }

在 foreach 循环中,我每次迭代都会发送一封电子邮件。

但是我需要延迟这些电子邮件,但我不想让 UI 线程休眠。

几个小时前我问了一些答案,但无法经常检查我的问题。

我尝试了他们的一些建议,例如使用这个:

Thread oThread = new Thread(new ThreadStart((sendEMailThroughOUTLOOK(recipient, subjectLine, finalbody)));

但我得到一个错误。它说它需要一个方法名称......而且我确实有一个方法名称。是因为我的方法的论点吗?

4

1 回答 1

0

您可以这样做,也可以查看 ParameterizedThreadStart:

Thread oThread = new Thread(new ThreadStart(() => { sendEMailThroughOUTLOOK(recipient, subjectLine, finalbody); }));
于 2012-10-01T20:05:53.937 回答