Vb.net 具有互斥对象的任务

Vb.net 具有互斥对象的任务,vb.net,task,mutex,Vb.net,Task,Mutex,我们有一个资源非常密集的业务。我被要求使它同步,为此,我找到了互斥。实现起来似乎很简单,但我还没有成功。(如果这有什么区别的话,这恰好是生活在控制台应用程序中——尽管我无法想象为什么会这样。)亚startExecution是我所关心的。我有一些VAR来存储任务id,因为我必须重新启动我的机器才能解锁互斥锁(在我放入Finally之前)。我想我可能可以通过cmd行使用任务的进程ID终止任务。但是,它的PID肯定使用了其他东西,因为a)任务ID总是非常低,比如2或4,b)它没有显示在任务列表中所以,

我们有一个资源非常密集的业务。我被要求使它同步,为此,我找到了互斥。实现起来似乎很简单,但我还没有成功。(如果这有什么区别的话,这恰好是生活在控制台应用程序中——尽管我无法想象为什么会这样。)亚startExecution是我所关心的。我有一些VAR来存储任务id,因为我必须重新启动我的机器才能解锁互斥锁(在我放入Finally之前)。我想我可能可以通过cmd行使用任务的进程ID终止任务。但是,它的PID肯定使用了其他东西,因为a)任务ID总是非常低,比如2或4,b)它没有显示在任务列表中
所以,概括一下,有两个问题:
1。我如何杀死正在运行的任何任务
2。我是否正确实现了互斥类
我整天都在为这件事苦恼;如果有人有线索,我将非常感激

    Dim precrunchMutexName As String = "precrunchMutex"
    Dim precrunchMutex As Mutex

    Try
        precrunchMutex = Mutex.OpenExisting(precrunchMutexName)
        'if successful, that means there's one in progress right now. 
    Catch ex As Exception
        'if one isn't found create a new one with that name
        precrunchMutex = New Mutex(False, precrunchMutexName)
    End Try

    Try
        Dim t As Task = Task.Factory.StartNew(
            Sub()
                writeLogClass.WriteLog("Waiting for mutex...")
                'request access to precrunch Mutex -- waitone
                If precrunchMutex.WaitOne() Then

                    writeLogClass.WriteLog("Mutex entered by task id: " & t.Id.ToString)

                    Try
                        startExecution()
                    Catch ex As Exception
                        writeLogClass.WriteLog(ex.ToString())
                    Finally

                        'release Mutex to allow access to another thread 
                        precrunchMutex.ReleaseMutex()
                        writeLogClass.WriteLog("Mutex released")
                    End Try

                End If


            End Sub
        )
        Dim status = t.Status
        Dim currentId = t.Id
    Catch ex As Exception
        writeLogClass.WriteLog("Error occurred when starting task. " & ex.ToString)
    End Try

为什么您需要互斥?因为这些进程中有多个与服务器绑定,然后我们的客户机就被套住了。信号量更可取吗?为什么要终止任务(你指的是进程,对吗)?您的场景仍然没有意义。我想出于调试目的终止它。我一直在改变,不喜欢每次都重新启动电脑。在现实生活中,当这个程序就位时,我不想杀死它。你正确地使用了互斥。如果应用程序崩溃/被杀死,操作系统应该释放互斥锁。您可以在控制台中订阅Ctrl+C,并在退出prgram之前释放互斥。