【发布时间】:2019-07-30 14:33:26
【问题描述】:
我有以下简化代码:
object myVariable;
var myThread = new Thread(async () =>
{
//Do something....
myVariable = //Some result....
});
myThread.Start();
我在方法的第一行开始myThread。我的理解是,该线程将关闭并执行,而该方法的其余部分同时执行。这是正确的吗?
然后在我的代码中到达一个点,在那里我将使用myVariable。鉴于此,如果 myThread 尚未完成,我需要暂停我的主线程。
我的理解是我可以使用myThread.Join() 来做到这一点。但是,一旦我调用.Join,它就会暂停主线程,直到myThread 完成。
我的问题是,如果我这样做:
开始myThread
那么
执行其他需要 x 秒的代码
那么
致电myThread.Join()
在这种情况下,在到达那行代码之前不会发生连接,例如,直到 x 秒后才会发生连接 - 或者连接是否提前?
我希望这个问题清楚吗?
【问题讨论】:
-
如果
myThread已经完成,Join()是空操作;如果没有,调用线程将阻塞当您调用Join- 这是否涵盖了它? -
是的,你是对的,它会像你写的那样表现
标签: c# multithreading concurrency