假设我有如下代码:
int Main()
{
if (true)
{
new Thread(()=>
{
doSomeLengthyOperation();
}).Start();
}
while (true)
{
//do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
有2个线程,我会打电话给主线程正在执行main()函数的线程,该线程被new'ed了里面的"如果"测试为主题A.
我的问题是,线程A什么时候被销毁?do doSomeLenghtyOperation()能够完成吗?
由于没有指向线程A的引用,它是否会被标记为垃圾收集的候选者:
我看到的所有示例都是Main()持有引用,然后主线程在退出之前等待与线程A连接.我很好奇上面代码的生命周期是什么.
提前致谢!
我正在尝试对WPF控件进行单元测试,并且需要模拟按键按下.我在这里看到了一个可能的解决方案,但是当我尝试传入PresentationSource时,我不断获得一个空值(来自PresentationSource.FromVisual()或PresentationSource.FromDependencyObject()),这会触发异常.
我的问题是如何获得我可以在单元测试中使用的非null PresentationSource?
当我从gdb获取callstack时,我只获取函数名和源文件信息.
(gdb) f #0 main (argc=1, argv=0xbffff1d4) at main.c:5
我没有得到该函数所属的共享库或应用程序.
在Windows上,Windbg或Visual Studio将显示带有"myDll!myFunc"格式的callstack,该格式显示该函数属于哪个模块.
目前在gdb中,我使用"info address [function]"来获取函数符号的地址,然后使用"info share"手动查找函数在内存中的范围,以确定它所在的库.
无论如何直接看图书馆没有这个手动过程?