c# – 在对象的实例上为同一方法创建多个线程
发布时间:2020-12-15 18:06:41 所属栏目:百科 来源:网络整理
导读:我有个问题.是否可能有效,如果我有一个带有方法DoSomething()的对象,如果我为这个方法创建多个线程,它会工作吗,它会作为一个单独的线程运行吗? 例如. public class SomeClass{ public void DoSomething() { //somethings done here }}public class MainProg
我有个问题.是否可能有效,如果我有一个带有方法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 } } 我希望能够解释我的意思.这会起作用还是会引起任何问题? 我正在编写一个几乎需要实时软件的程序,我目前正在决定初始化SomeClass的新实例是否更好? 希望有人能回答.如果我的问题没有意义,请发表评论,我会进一步解释! 谢谢, Base33 PS代码是专门为示例编写的:) 解决方法
每个线程都有一个单独的调用堆栈,所以是的,它们都可以在同一个对象上使用相同的方法.实际上,如果需要,每个线程都可以(通过递归)多次在同一个实例上调用相同的方法.
但是,如果您在该对象中使用状态(实例或静态字段等,以及与该状态相关的任何内容),那么可能会让您失望的是.您需要确保对任何共享状态的访问都能充分考虑(并且可能是同步)多线程访问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |