如何对此作业进行多线程处理
本文关键字:多线程处理 作业 | 更新日期: 2023-09-27 17:56:13
我的想法是,如果完成下载此消息,然后将它们添加到ListView。但是,如果此代码我们将等待很长时间,并且程序将没有响应。你可以帮我吗?
private void MailTree_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
MailList.Items.Clear();
for (int i = 0; i < client.Folders.Count; i++)
{
(ContextMenuListView.Items[1] as ToolStripMenuItem).DropDownItems[i].Click += new EventHandler(MainForm_Click);
}
if (MailTree.SelectedNode.Text == Username)
{
webBrowser1.Visible = false;//webBrowser1.DocumentText = "Hello Baby";
AttachmentList.Visible = false;
groupBox1.Visible = false;
}
else
{
webBrowser1.Visible = true;
groupBox1.Visible = true;
try
{
messages = client.Folders[MailTree.SelectedNode.Text].Search("ALL", false); // Search mail in your choossen Folder
AmoutOfMail = messages.Count(); //Amout of Mail in this Folder
for (int i = 0; i < AmoutOfMail; i++)
{
mes = messages[i];
SaveMail(mes); // dowload mes and store message
ListViewItem item = new ListViewItem();
Mime m = EncodingMail(MailTree.SelectedNode.Text, mes); // read mes from place store message
item.Text = mes.MessageUid.ToString();
item.SubItems.Add(m.MainEntity.Subject);
ReturnMime(m);
if (mailfromname != null)
item.SubItems.Add(mailfromname);
else
item.SubItems.Add(mailfrom);
item.SubItems.Add(m.MainEntity.Date.ToString());
item.SubItems.Add(mailfrom);
MailList.Items.Add(item);
}
}
catch (Exception)
{ }
}
}
是的。
查看Tasks
库,将您想要的任何内容卸载到不同的线程上。
只需确保使用 Controls.InvokeRequired
将回调代码放回 UI 线程即可。切勿从与 UI 线程不同的线程修改 UI。