Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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
如何在一个地方暂停多个线程,然后让一个线程做一些事情?C#(Zennoposter)_C#_Multithreading_Synchronization_Thread Safety_Autoresetevent - Fatal编程技术网

如何在一个地方暂停多个线程,然后让一个线程做一些事情?C#(Zennoposter)

如何在一个地方暂停多个线程,然后让一个线程做一些事情?C#(Zennoposter),c#,multithreading,synchronization,thread-safety,autoresetevent,C#,Multithreading,Synchronization,Thread Safety,Autoresetevent,我对线程和类似的东西非常熟悉。我知道如何使用锁结构,但没有其他东西。但现在是时候了 我在Zennoposter上有一个多线程的程序。我使用C#在那里编写代码。一切正常,但现在我有一个问题。我需要通过一个线程在程序的某些地方执行一段代码(我必须运行一个应用程序并初始化project.Tables)。我试过两种方法: 我暂停了所有线程,除了代码之前的最后一个线程和执行代码的最后一个线程。但这对我不起作用。我列出了一个线程列表,检查了它们的状态,如果状态不是挂起的,我就挂起它。但是我没有让最后一个线程

我对线程和类似的东西非常熟悉。我知道如何使用锁结构,但没有其他东西。但现在是时候了

我在Zennoposter上有一个多线程的程序。我使用C#在那里编写代码。一切正常,但现在我有一个问题。我需要通过一个线程在程序的某些地方执行一段代码(我必须运行一个应用程序并初始化project.Tables)。我试过两种方法:

  • 我暂停了所有线程,除了代码之前的最后一个线程和执行代码的最后一个线程。但这对我不起作用。我列出了一个线程列表,检查了它们的状态,如果状态不是挂起的,我就挂起它。但是我没有让最后一个线程继续工作,而是阻塞了所有线程
  • 我使用了static AutoResetEvent(
    static AutoResetEvent waitHandler=new AutoResetEvent(true);
    )。然后在使用“单线程执行”放入代码之前,我必须暂停我使用的所有线程
    waitHandler.WaitOne()使每个线程等待。在这段代码之后,我使用了
    waitHandler.Set()
    允许其他线程执行
    waitHandler
    。但它与锁结构一样:(
  • 问题是,如果一个线程到达了必须停止的位置,而之前任何其他线程仍在执行代码,那么它必须等待任何其他线程的执行,而不是执行“单线程执行”代码。 所以,如果有人知道如何解决这个问题,请帮帮我。我被困了一个星期。

    你需要把锁锁好 样本:

    锁定(同步对象){
    //这里您的代码仅用于1个线程,其他线程等待
    }