你喜欢这个主意吗? (关于线程)

时间:2010-02-23 00:02:50

标签: .net multithreading

能够启动这样的线程会不会很好。

Sub DoStuff()
    Using MyThead = New Threading.Thread()
       'Do stuff on MyThread.
    End Using
End Sub

编写代码的代码要少得多:

Sub DoStuff()
    Dim MyThread As New Threading.Thread(AddressOf DoStuffThread)
    MyThread.Start()
End Sub

Sub DoStuffThread()
    'Do Stuff
End Sub

3 个答案:

答案 0 :(得分:6)

使用匿名委托在C#中已经可以实现(噪点更多):

new Thread(() => {
  // do stuff on thread
}).Start();

并将通过多行lambdas在VB 10中得到支持:

New Thread(Sub()
             ' do stuff on thread
           End Sub).Start()

(我可能有VB语法错误,我还没有真正使用过VB 10。)

答案 1 :(得分:1)

所以在你的例子中......将创建一个包含代码的线程,直到结束使用并开始并行执行?

不,我根本不喜欢这样,不太清楚发生了什么。如果您想象它的工作方式不同,请更新您的问题以描述您的概念。

答案 2 :(得分:1)

End Using之后的代码何时运行?是否等到线程结束,或者Using块是否立即返回?如果它等到线程完成,那么启动线程的重点是什么?但如果等待,那么如果你想获得线程的返回值,你会怎么做?

对于线程,确实存在比您提到的标准惯用语更优雅的习语。例如,在C#中,您可以使用匿名委托做同样的事情,而C#4.0有各种与线程相关的工具。但是你的例子没有说明其中一个。