开发者

How to multithreading this jobs?

开发者 https://www.devze.com 2023-03-05 08:15 出处:网络
My idea is if finished download this messages then add them to ListView. But if this code we will waiting very long and program will be not responding. Can you help me?

My idea is if finished download this messages then add them to ListView. But if this code we will waiting very long and program will be not responding. Can you help me?

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)
        { }                                                
    }
}


Yes.

Look into the Tasks library to offload whatever you want onto a different thread.

Just make sure that you use Controls.InvokeRequired to place the callback code back onto the UI thread. You should never modify the UI from a different thread than the UI thread.

0

精彩评论

暂无评论...
验证码 换一张
取 消