Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vb.net中防止两个线程同时运行_Vb.net_Multithreading_Synclock - Fatal编程技术网

在vb.net中防止两个线程同时运行

在vb.net中防止两个线程同时运行,vb.net,multithreading,synclock,Vb.net,Multithreading,Synclock,我不熟悉.net中的线程,很难找到我可以使用的好例子。 我在这里读文章。但我还是不清楚。现在我有一个程序,我试图让两个线程同时运行,但做不同的事情。我有一个线程在做它应该做的事情,但是当我启动我的第二个线程(我把它命名为PrintThread)时,我的PrintThread和主线程运行相同的代码行,我应该查看syncLock语句来避免这种情况吗 无法计算表达式,因为我们在无法进行垃圾收集的位置停止 这只是一个调试器诊断,告诉您它无法显示watch表达式。当您使用Debug+breakall进入调

我不熟悉.net中的线程,很难找到我可以使用的好例子。 我在这里读文章。但我还是不清楚。现在我有一个程序,我试图让两个线程同时运行,但做不同的事情。我有一个线程在做它应该做的事情,但是当我启动我的第二个线程(我把它命名为PrintThread)时,我的PrintThread和主线程运行相同的代码行,我应该查看syncLock语句来避免这种情况吗

无法计算表达式,因为我们在无法进行垃圾收集的位置停止

这只是一个调试器诊断,告诉您它无法显示watch表达式。当您使用Debug+breakall进入调试器时,很容易出现此问题


一般来说,当两个或多个线程运行同一代码时,调试代码是非常困难的。断点不再有效,因为每个线程都会命中它们。除了使用单元测试(推荐!),一种可能的解决方案是使用Debug+Windows+线程。您将看到此窗口中列出的活动线程。您可以右键单击它们并选择“冻结”。这会冻结线,直到你再次“解冻”它。这使您可以只调试一个线程。

线程的全部要点是它们可以同时运行。如果您不希望它们同时执行,请不要使用线程。请解释两个线程运行相同代码的问题所在。为什么这是一个问题?锁对此没有帮助。设置\u文件\u路径=无法计算表达式,因为我们在无法进行垃圾收集的位置停止,可能是因为当前方法的代码可能已优化。-这就是我的主线程停止的地方,这里的专家能给我指出正确的方向吗?好的,我希望它们同时运行,但我不希望它们做同样的事情,或者说运行相同的代码行如果它们运行相同的代码(这可能没问题),那么这就是您定义第二个线程的方式(这是你让它跑的)。