thread类确实能解决。 backgroundWorker控件也行。 主要是移动窗体属于UI线程,当然无反应,只要你把负担大的运算,写到其他线程里就行。运算结果用事件或者接口返回UI线程,调试时要关闭一些东西。正常编译可过。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、雅安服务器托管、营销软件、网站建设、雁塔网站维护、网站推广。
首先这个要看的子函数执行的情况了,比如你子函数要8秒才能执行完成,你1秒钟执行一次,到时会有好几个子函数在运行,肯定会影响程序运行的。你要调整时间才能让子函数不影响主程序;
再一个,如果不想影响主程序,你可以再建一个程序,专门用来执行子函数,然后让那个程序用定时器每秒执行一次子函数,这样就不会影响主程序;
不行, fileopen是用来打开、读取或创建文件的,主要是文本类的文件。
应该用shell方法,如:
Shell("D:\mypath\abc.exe")
注意各种参数的设置,详查msdn
//一部分指令……
int duration = 1000; //设定进程挂起时间,单位毫秒
System.Threading.Thread.Sleep(duration); 挂起当前进程
//另一部分指令……
如果你用控制台应用程序,这样就可以了。如果你用窗体应用程序且在窗体主线程下运行,则需要用到计时器或多线程等。
方法一:通过Diagnostics.Process.GetProcessesByName函数来检测程序是否已经启动
Imports System.Windows.Forms
Module Module1
Sub Main()
'检测多重启动
If Diagnostics.Process.GetProcessesByName( _
Diagnostics.Process.GetCurrentProcess.ProcessName).Length 1 Then
MessageBox.Show("已经一个实例的本程序正在运行。")
Return
End If
Application.Run(New Form())
End Sub
End Module
不过这个方法有个缺点,如果用户改了下exe的名字就检测不到了,所以更好的方法如下
方法2:使用Mutex
Imports System.Windows.Forms
Module Module1
Sub Main()
Dim createdNew As Boolean
' 创建mutex
Dim mutex As System.Threading.Mutex = _
New System.Threading.Mutex(True, "YourAppName", createdNew)
If createdNew = False Then
MessageBox.Show("已经一个实例的本程序正在运行。")
Return
End If
Application.Run(New Form())
' 释放mutex
mutex.ReleaseMutex()
End Sub
End Module
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款