如何将方法限制为特定线程?

dan*_*gph 2 .net c# multithreading

我有一个方法,出于线程安全的原因应该只有特定的线程使用.如果另一个线程试图使用它,我想抛出一个异常.

public void UnsafeMethod()
{
    if (CurrentThreadId != this.initialThreadId)
        throw new SomeException("Can only be run on the special thread.");
    // continue ...
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能CurrentThreadId在上面的代码中找到?或者是否有其他方式来实现我想做的事情?

Dav*_*son 5

线.CurrentThread.ManagedThreadId

或者您可以只存储对线程对象本身的引用,并将其与Thread.CurrentThread进行比较.