如何在C#应用程序中锁定主线程?

时间:2009-07-02 06:49:48

标签: c#

如何在C#应用程序中锁定MainThread

这样的东西
lock (Thread.CurrentThread) // This will give the current running thread
{
// Bolck of Sync Codes
}

我也有一些工作线程..但我需要锁定MainThread并执行 一些代码..

任何人都可以帮助我..

3 个答案:

答案 0 :(得分:2)

为什么需要锁定CurrentThread对象?对于不同的线程,此值将不同,并且多个线程无论如何都可以进入此块。

如果您试图避免多个线程进入上面显示的块,则所有线程都应尝试获取已商定的公共对象的锁定。 定义像

这样的成员
private member object m_objectForLock;

和 获得这样的锁

lock(m_objectForLock)
{
  // Block of sync codes
}

答案 1 :(得分:1)

问题不明确,需要精心设计。

但是要在多个sperate线程之间共享对象,必须应用某种锁定/同步机制。

实现此目的的一种方法是以下列方式使用锁定对象:

    private object _objectLock;

    private void DoWork()
    {
        lock (_objectLock)
        {
            //Code to execute 
        }
    }

另一方面,如果你想“保持”一个线程的执行,你可以考虑使用System.Threading.EventWaitHandle

答案 2 :(得分:0)

我不确定我是否正确理解你的问题,但是......

如果您没有明确地异步调用方法,则会在您的线程中自动发生阻塞。在这种情况下,阻止不是特征,而是结果。

在示例中使用lock是为了在异步上下文中显式访问变量。