Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 进程。在没有互斥锁的情况下开始中断?_Vb.net_Winforms - Fatal编程技术网

Vb.net 进程。在没有互斥锁的情况下开始中断?

Vb.net 进程。在没有互斥锁的情况下开始中断?,vb.net,winforms,Vb.net,Winforms,我正在开发一个旧的VB遗留应用程序,我正在努力了解我的情况 基本上,据我所知,这个应用程序本质上是获取一个文件,并将其放入一个可执行文件中,就是这样。客户端希望使用多个线程来完成此操作,但是在我之前处理此应用程序的人员不再在此工作 在异步过程中的某个时刻,有一行令人不快的代码: Dim exeProcess As Process Dim exeInfo As New ProcessStartInfo ' presume that appFile is in the same path as t

我正在开发一个旧的VB遗留应用程序,我正在努力了解我的情况

基本上,据我所知,这个应用程序本质上是获取一个文件,并将其放入一个可执行文件中,就是这样。客户端希望使用多个线程来完成此操作,但是在我之前处理此应用程序的人员不再在此工作

在异步过程中的某个时刻,有一行令人不快的代码:

Dim exeProcess As Process
Dim exeInfo As New ProcessStartInfo

' presume that appFile is in the same path as the executable
With exeInfo
   .FileName = _AppPath & "\" & _Executable
   .Arguments = arg
   .UseShellExecute = False
   .WorkingDirectory = _WorkingFolder
End With

Dim mutex As Mutex = New Mutex(False, "namedMutex")

mutex.WaitOne()
exeProcess = Process.Start(exeInfo)
_RunningProcess = exeProcess
exeProcess.WaitForExit()
exeProcess.Close()
mutex.ReleaseMutex()
如果我注释掉mutex.WaitOne()和mutex.ReleaseMutex(),它启动的进程会抛出无法创建新文件的错误。前一位对此进行研究的人就如何存在同步问题发表了评论,这就是为什么必须使用互斥体


我对VisualBasic并没有太多的了解,而且就目前的情况而言,我对自己应该做什么基本上一无所知。如果有人对我如何解决这个问题有任何建议,我将非常感激。我很抱歉没有在这篇文章中提供更多信息,这基本上就是我正在处理的问题。/:

不要注释掉互斥体。你需要联系你开始使用的程序的所有者以获得你需要的支持。请求多线程的人不知道他们在说什么。不能在I/O工作中抛出额外的线程,这不是线程的用途。线程用于CPU工作,而不是I/O。代码是否在桌面或具有RAID阵列或其他托管存储的服务器上运行?有多少个CPU核?请参阅并考虑让框架处理线程,让您的代码处理<代码>任务<代码>。@ MathieuGuindon在桌面上运行,并且我相信用户能够手动设置它们有多少个内核。不过我认为你是对的,这项工作对我来说并不合适,谢谢你的帮助!桌面大概只有一个硬盘。考虑单个读/写HDD头有多少物理读写的并发读写。