另一个问题:为什么 VS10 如此热衷于抱怨 Invoke?
在我不断追求让我的应用程序工作成为世界上最好的 C# 程序员的过程中,我认为线程是一件好事™。
MSDN 有一篇关于制作的有用文章对控件的线程安全调用 http://msdn.microsoft.com/en-us/library/ms171728.aspx,但它(以及似乎有关该主题的所有其他文章)间接引用了名为 Invoke 的方法。有时甚至是 BeginInvoke,我读过是首选 http://kristofverbiest.blogspot.com/2007/02/avoid-invoke-prefer-begininvoke.html.
如果我能让 Visual Studio 识别 Invoke,那么这一切就太好了。 MSDN 是这么说的它包含在 System.Windows.Forms 程序集中 http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx,但我已经在“使用”它了。可以肯定的是,我也尝试过使用 System.Threading,但没有成功。
我需要跳过哪些环节才能使调用正常工作?
Invoke http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx处于控制范围内。 IE。Control.Invoke();
没有办法直接调用Invoke,因为没有这样的方法System.Windows.Forms
。 Invoke 方法是一个控制成员。
这是一个example https://stackoverflow.com/questions/3037272/controlling-form-elements-from-a-different-thread-in-windows-mobile/3037311#3037311我之前做的:
public delegate void AddListViewItemCallBack(ListView control, ListViewItem item);
public static void AddListViewItem(ListView control, ListViewItem item)
{
if (control.InvokeRequired)
{
AddListViewItemCallBack d = new AddListViewItemCallBack(AddListViewItem);
control.Invoke(d, new object[] { control, item });
}
else
{
control.Items.Add(item);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)