如何在C#应用程序中锁定MainThread
像
这样的东西lock (Thread.CurrentThread) // This will give the current running thread
{
// Bolck of Sync Codes
}
我也有一些工作线程..但我需要锁定MainThread并执行 一些代码..
任何人都可以帮助我..
答案 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
是为了在异步上下文中显式访问变量。