Kri*_*isc 13 .net c# multithreading
我正在使用静态和非静态方法从类中读取线程,我处于类似情况.
我有一个静态方法,从资源中提取数据并根据数据创建一些运行时对象.
static class Worker{
public static MyObject DoWork(string filename){
MyObject mo = new MyObject();
// ... does some work
return mo;
}
}
Run Code Online (Sandbox Code Playgroud)
该方法需要一段时间(在这种情况下,它读取5-10mb文件)并返回一个对象.
我想采用这种方法并在多线程情况下使用它,这样我就可以一次读取多个文件.除了设计问题/指南,多个线程如何访问此代码?
假设我有类似的东西......
class ThreadedWorker {
public void Run() {
Thread t = new Thread(OnRun);
t.Start();
}
void OnRun() {
MyObject mo = Worker.DoWork("somefilename");
mo.WriteToConsole();
}
}
Run Code Online (Sandbox Code Playgroud)
是否为每个线程运行静态方法,允许并行执行?
在这种情况下,您应该区分静态方法和静态字段.每次调用静态方法都有自己的方法及其局部变量的"副本".这意味着在您的示例中,每个调用都将在其自己的MyObject实例上运行,并且调用将彼此无关.这也意味着在不同的线程上执行它们没有问题.