可以在主窗体里设置过程代理,然后在后台线程中invoke该过程!
解决方案 »
- 数据相似度匹配问题
- PrintDocument在有段落、图片、绘制表格的情况下,如何分页?
- 问个简单的SQL问题!别拿砖头砸我!!!!!
- 如何控制其他程序的按钮
- 像素和厘米之间是如何转换的?
- 求一个类似QQ的网络聊天工具的源代码
- 为什么Assembly.Load(Path).CreateInstance(ClassName);的值为null?
- 各位前辈有没有遇到过这样的问题,数据库中所有字段都可以更新但是某一个字段不行?
- 讨论怎样取得操作系统支持的字体!
- 请Devexpress Winform版的高手进来看看
- 请问:判断一个数据集ds里是否有表tb1,为什么不能用if(ds.Tables["tb1"].Rows.Count>0)?
- 关于接口的二义性问题
http://www.microsoft.com/china/msdn/archives/library/dnforms/html/winforms08162002.asp
public delegate void DelegateShowMessage(string s);
在窗体中指定代理
public class frmMain : System.Windows.Forms.Form
{
public DelegateShowMessage frmShowMessage;
//....
}在线程中调用代理
m_form.Invoke(m_form.frmShowMessage,new Object[] {strMessage});
如果我想在窗口中异步执行一个方法会不会好点
我提到的应该还是较安全的吧,至少我没有因为这个原因让程序死掉吧,呵呵。
你的要求最好还是在线程内处理吧?
1.建一个长期的后台线程,用Invoke方式来调用主窗体上的过程来启动警报窗口
2.直接在主窗体一用MethodInvoker方式来做不同步运行
实际上2个都是用了Invoke,只是前者能方便地用System.Thtreading.Timer.这个对定时十分好用,后者的话只能用System.Windows.Form.Timer.这个东西让人很不舒服