gpt4 book ai didi

c# - 是否有任何等效于使用 C# 限制对一个线程的访问的访问修饰符?

转载 作者:行者123 更新时间:2023-11-30 16:03:24 24 4
gpt4 key购买 nike

基本上,我很好奇是否有什么东西可以让下面的事情发生。

class MyClass
{
public void MyMethod() { }

public void MyNonThreadMethod() { }
}

public void OtherThread(MyClass myObject)
{
Thread thread = new Thread(myObject.MyMethod);
thread.Start(); // works

thread = new Thread(myObject.MyNonThreadMethod);
thread.Start(); // does not work
}

问候,安东

最佳答案

根据您的示例,我假设您需要实现一个只能在单个指定线程上执行的方法。为此,您可以使用线程静态字段来标识指定的线程——例如,通过在构造函数中设置标志。

class MyClass
{
[ThreadStatic]
bool isInitialThread;

public MyClass()
{
isInitialThread = true;
}

public void MyMethod() { }

public void MyNonThreadMethod()
{
if (!isInitialThread)
throw new InvalidOperationException("Cross-thread exception.");
}
}

不要为此目的使用 ManagedThreadId – 参见 Managed Thread Ids – Unique Id’s that aren’t Unique .

关于c# - 是否有任何等效于使用 C# 限制对一个线程的访问的访问修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com