Windbg应该理解用于将线程名称传递给调试器的MS异常协议.
我不能让这个工作.在网上看,有很多例子显示没有线程名称的"〜"线程列表,这就是我所看到的.我正在调试.NET x86进程,我已经尝试了WDK 8.1 x86和x64版本的Windbg.
有谁知道这个功能是否仍然可用?我错过了什么?
在使用.NET 4.5 async\await框架后,我有一个问题.
我们来看看这个程序(msdn示例):
async Task<int> AccessTheWebAsync()
{
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
DoIndependentWork();
string urlContents = await getStringTask;
return urlContents.Length;
}
void DoIndependentWork()
{
resultsTextBox.Text += "Working . . . . . . .\r\n";
}
Run Code Online (Sandbox Code Playgroud)
该程序将按以下顺序运行:
我花了一些时间来理解的一件事是,该方法GetStringAsync尽管其名称同步运行(名称约定确实具有误导性).
在我们异步运行该方法的过程中,我们需要使用Task.Run或Task.Factory.StartNew明确地使用.
但真正的问题是,如果我们有独立的工作,为什么不马上做,而不是等待等待从GetStringAsync调用?(换句话说,为什么异步方法不能按定义异步运行?)
编辑: 我将改写第二和第三个操作:
(2)GetStringAsync同步启动.
(3)在某些时候,GetStringAsync调用await和线程分叉,控件返回AccessTheWebAsync.