debugging VS 2022调试器在同一行C#代码上执行两次-使用TopShelf的windows服务

oewdyzsn  于 2023-06-06  发布在  C#
关注(0)|答案(1)|浏览(177)

我有一个.Net 6项目,使用C#中的TopShelf构建,作为Windows服务运行。
我想把我的代码调试到某一行。然后,我按下F10,但它的步骤进入线,然后在第2次F10按出来。换句话说,它就像在同一行上中断了两次。
为什么会这样?
我的调试器设置被设置为默认值。
下面是我的意思的一个例证:

知道它为什么会这样吗

2ekbmq32

2ekbmq321#

从外观上看,它的两个不同的线程访问同一行代码,您正在它们之间切换。既然你使用的是Topshelf,我并不惊讶这样的事情发生。我假设您正在调试的服务是多线程的。
您可以看出线程发生了变化,因为突出显示的代码行的黄色从明亮的黄色变为较暗的黄色。bCopy.WriteToServer(dt)必须不是线程安全的,这会导致异常(从外观上看,第二个线程是因为catch行以较暗的黄色突出显示)。您还可以通过查看Visual Studio顶部工具栏中的线程号来判断是否更改了线程。异常消息还指出它正在被“另一个进程”使用。

相关问题