gpt4 book ai didi

c# - 有什么方法可以在 C#/Visual Studio 中的断点处休眠?

转载 作者:太空狗 更新时间:2023-10-29 22:00:31 24 4
gpt4 key购买 nike

在C#/Visual Studio 中遇到断点时,有什么方法可以将当前线程的执行延迟指定的时间段吗?休眠后,应该继续执行。

我知道 VS 中有一个“命中时”功能,允许在遇到断点时执行任意代码(主要是将信息打印到控制台),但它非常有限;它不允许将 Thread.Sleep 或任何耗时的操作(如 for 周期)放在那里。也不允许使用委托(delegate)/lambda 函数。

我正在使用 Visual Studio 2012。

最佳答案

我有一个需要一次性重新编译的 native 解决方案。如果需要,我确信它可以被翻译成 C#。

定义这个结构:

struct THREAD_DATA
{
int ms;
DWORD id;
THREAD_DATA(DWORD _id, int _ms) : id(_id), ms(_ms) {};
};

还有这两个函数:

DWORD WINAPI PauseThread(LPVOID p)
{
THREAD_DATA* ptd = (THREAD_DATA*)p;
HANDLE target = OpenThread(THREAD_SUSPEND_RESUME, FALSE, ptd->id);
SuspendThread(target);
Sleep(ptd->ms);
ResumeThread(target);
delete p;
return 0;
}
void PauseCurrentThread(int ms)
{
THREAD_DATA* ptd = new THREAD_DATA(GetCurrentThreadId(), ms);
HANDLE h = CreateThread(NULL, 0, &PauseThread, (LPVOID)ptd, 0, 0);
}

当你在断点上时,使用立即窗口运行:PauseCurrentThread(5000) 或任何您应该延迟的毫秒数。

如果您想在多个项目中不使用仪器来完成它 - 我可能会开发一个 Visual Studio 扩展来自动完成它。

关于c# - 有什么方法可以在 C#/Visual Studio 中的断点处休眠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32222373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com