需求如下:
我有一个Login.cs登录窗体,一个Main.cs主窗体,有一个窗体WatchKey.cs是一个提示信息窗体,这是用来检测一个USB设备的,每5秒检测一次(我现在做的是把它做为一个后台线程启动的)。我想要实现的就是在程序的生命周期内(包括登录时),我这个WatchKey线程都是在运行着的。然后如果每5秒/次的检测中,没有检测的,我就要把WatchKey窗体给ShowDialog出来,主线程不可操作(在登录时,登录窗体不能操作,在主窗体时,主窗体也不可操作)请问下,应该如何去做?
我有一个Login.cs登录窗体,一个Main.cs主窗体,有一个窗体WatchKey.cs是一个提示信息窗体,这是用来检测一个USB设备的,每5秒检测一次(我现在做的是把它做为一个后台线程启动的)。我想要实现的就是在程序的生命周期内(包括登录时),我这个WatchKey线程都是在运行着的。然后如果每5秒/次的检测中,没有检测的,我就要把WatchKey窗体给ShowDialog出来,主线程不可操作(在登录时,登录窗体不能操作,在主窗体时,主窗体也不可操作)请问下,应该如何去做?
解决方案 »
- 不以.rar结尾的正则表达式怎么写
- 初学C#已有三个多月, 心中困惑求助.
- 高手来看看,用c#判断数据库的表不存在后,单步运行没错,F5运行就出错
- C# 怎么监测是否有声音输出?
- 用IE8.0打不开.ASPX文件
- 如何在button的click控件中,获取这个button的text?
- 我想做个进入系统是在form中做的,一进去就见到主界面和密码提示框,密码提示框里面有确定和取消,确定之后就可以进入其它按钮可用了,取消之
- log4net 的问题
- 请教DataGridView增加新行问题
- “软件人员不受年龄的限制”这种说法正确吗?
- c#里的模态对话框,点确定如果不关闭!!!,急求方法
- 正则表达式字符重排
{
if (this.InvokeRequired)
{
MethodInvoker me = new MethodInvoker(ShowForm);
Invoke(me);
}
}
void ShowForm()
{
Form1 f = new Form1();
f.ShowDialog();
}
{
new Thread(() =>
{
this.Invoke((Action)(() =>
{
MessageBox.Show("Test");
}));
}).Start();
}就是你的意思吧。
简单说。
this.Invoke((Eventhandler)delegate
{
MessageBox.Show("test");
});这样就可以了。如果你不是在窗体线程。也容易。Form.FromHandle(Process.GetCurrentProcess().MainWindowHandle).Invoke((Eventhandler)delegate
{
MessageBox.Show("test");
});