我有一个.Net 6项目,使用C#中的TopShelf构建,作为Windows服务运行。我想把我的代码调试到某一行。然后,我按下F10,但它的步骤进入线,然后在第2次F10按出来。换句话说,它就像在同一行上中断了两次。为什么会这样?我的调试器设置被设置为默认值。下面是我的意思的一个例证:
知道它为什么会这样吗
2ekbmq321#
从外观上看,它的两个不同的线程访问同一行代码,您正在它们之间切换。既然你使用的是Topshelf,我并不惊讶这样的事情发生。我假设您正在调试的服务是多线程的。您可以看出线程发生了变化,因为突出显示的代码行的黄色从明亮的黄色变为较暗的黄色。bCopy.WriteToServer(dt)必须不是线程安全的,这会导致异常(从外观上看,第二个线程是因为catch行以较暗的黄色突出显示)。您还可以通过查看Visual Studio顶部工具栏中的线程号来判断是否更改了线程。异常消息还指出它正在被“另一个进程”使用。
bCopy.WriteToServer(dt)
catch
1条答案
按热度按时间2ekbmq321#
从外观上看,它的两个不同的线程访问同一行代码,您正在它们之间切换。既然你使用的是Topshelf,我并不惊讶这样的事情发生。我假设您正在调试的服务是多线程的。
您可以看出线程发生了变化,因为突出显示的代码行的黄色从明亮的黄色变为较暗的黄色。
bCopy.WriteToServer(dt)
必须不是线程安全的,这会导致异常(从外观上看,第二个线程是因为catch
行以较暗的黄色突出显示)。您还可以通过查看Visual Studio顶部工具栏中的线程号来判断是否更改了线程。异常消息还指出它正在被“另一个进程”使用。