【发布时间】:2013-10-28 15:52:37
【问题描述】:
我可以像[ThreadStatic] 一样使用外部程序集的static method 方法吗?
这是我的情况。
assembly class(我无法访问其源代码)具有这种结构
public class RegistrationManager()
{
private RegistrationManager() {}
public static void RegisterConfiguration(int ID) {}
public static object DoWork() {}
public static void UnregisterConfiguration(int ID) {}
}
注册后,如果不取消注册之前注册的 ID,我就无法使用其他 ID 呼叫 DoWork()。实际上我想通过多线程同时调用具有不同 ID 的 DoWork() 方法。
如果RegisterConfiguration(int ID) 方法是[ThreadStatic],我可以在不同的线程中调用它而不会出现调用问题,对吧?那么,我可以将[ThreadStatic] 属性应用于此方法还是有其他方法可以同时调用两个static 方法而无需等待其他线程注销它?
如果我像下面这样检查它,它应该可以工作。
for(int i=0; i < 10; i++)
{
new Thread(new ThreadStart(() => Checker(i))).Start();
}
public string Checker(int i)
{
public static void RegisterConfiguration(i); // Now i cannot register second time
public static object DoWork(i);
Thread.Sleep(5000); // DoWork() may take a little while to complete before unregistered
public static void UnregisterConfiguration(i);
}
【问题讨论】:
标签: c# multithreading thread-safety static-methods threadstatic