0

我正在尝试将电子邮件表单插入另一个线程到 Form1 列表视图,但不知何故它不起作用。这是我的代码:

    private delegate void InsertIntoListDelegate(string email);
    private void InsertIntoList(string email)
    {
        if (f1.listView1.InvokeRequired)
        {
            f1.listView1.Invoke(new InsertIntoListDelegate(InsertIntoList), email);
        }
        else
        {
            f1.listView1.Items.Add(email);
            f1.listView1.Refresh();
        }
    }

如果你能帮助我,那么谢谢你。

4

1 回答 1

2

尝试这个:

    private delegate void InsertIntoListDelegate(string email);
    public void InsertIntoList(string email)
    {
        if(InvokeRequired)
        {
            Invoke(new InsertIntoListDelegate(InsertIntoList), email);
        }
        else
        {
            f1.listView1.Items.Add(email);
            f1.listView1.Refresh();
        }
    }

InsertIntoList是封闭控件的成员,因此应该在该控件而不是列表视图上调用。

试试这个对我有用的非常简单的测试:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private delegate void InsertIntoListDelegate(string email);

    public void InsertIntoList(string email)
    {
        if(InvokeRequired)
        {
            Invoke(new InsertIntoListDelegate(InsertIntoList), email);
        }
        else
        {
            listView1.Items.Add(email);
        }
    }

    private void button1_Click(object sender, System.EventArgs e)
    {
        Task.Factory.StartNew(() => InsertIntoList("test"));
    }
}
于 2012-04-06T17:52:26.820 回答