在对象上的实例上为同一方法创建多个线程

Bas*_*e33 6 c# multithreading

我有个问题.是否可能有效,如果我有一个带有方法DoSomething()的对象,如果我为这个方法创建多个线程,它会工作吗,它会作为一个单独的线程运行吗?

例如

public class SomeClass
{
    public void DoSomething()
    {
        //somethings done here
    }
}

public class MainProgram
{
    public MainProgram()
    {
         InitializeComponents();
    }

    protected override OnStart(string[] args)
    {
         SomeClass sc = new SomeClass();
         Thread workerOne = new Thread(() => sc.DoSomething());
         workerOne.Start();

         Thread workerTwo = new Thread(() => sc.DoSomething());
         workerTwo.Start(); //start a new thread calling same method
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够解释我的意思.这会起作用还是会引起任何问题?

我正在编写一个几乎需要实时软件的程序,我目前正在决定初始化SomeClass的新实例是否更好?

希望有人能回答.如果我的问题没有意义,请发表评论,我会进一步解释!

谢谢,

Base33

PS代码是专门为示例编写的:)

Mar*_*ell 13

每个线程都有一个单独的调用堆栈,所以是的,它们都可以在同一个对象上使用相同的方法.实际上,如果需要,每个线程都可以(通过递归)多次在同一个实例上调用相同的方法.

然而,什么可能会发觉你的是,如果你使用的状态在该对象(实例或静态字段等,以及相关的东西那个状态).您需要确保对任何共享状态的访问都能充分考虑(并且可能是同步)多线程访问.