首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将线程重新分配给不同的方法vb.net

将线程重新分配给不同的方法vb.net
EN

Stack Overflow用户
提问于 2010-02-16 18:09:21
回答 2查看 118关注 0票数 2

一旦线程被实例化,是否可以将线程重新分配给不同的方法。如果没有,有没有其他选择?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-16 18:18:02

除非线程已经启动,否则你可以使用反射,但这样做的用处非常值得怀疑。为什么不创建一个不同的线程实例:

代码语言:javascript
运行
复制
var thread = new Thread(Method1);
thread
    .GetType()
    .GetMethod("SetStartHelper", BindingFlags.Instance | BindingFlags.NonPublic)
    .Invoke(thread, new object[] { new ThreadStart(Method2), 0 });
thread.Start();
票数 2
EN

Stack Overflow用户

发布于 2010-02-16 18:22:34

除非你正在使用调试API做一些奇怪的事情,或者托管CLR并玩弄内部机制,否则不可能将线程‘重新分配’给一个新方法,因为这将涉及到操纵线程的堆栈。

你能做的就是在你的线程上使用一个命令模式,向它发送可能会随时间变化的工作“有效负载”:

代码语言:javascript
运行
复制
        Action worker=null;
        bool running = true;
        var t = new Thread(() =>
                            {
                                while(running)
                                {
                                    Action theWorker = worker;
                                    if(theWorker!=null)
                                    {
                                        theWorker();    
                                    }
                                    Thread.Sleep(10);
                                }
                            });
        worker = new Action(() => Console.WriteLine("hi mum"));

        t.Start();
        Thread.Sleep(100);
        worker=new Action(()=>Console.WriteLine("I can see my house from here"));
        Thread.Sleep(100);
        running = false;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2272005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档