小编Nic*_*ate的帖子

Windbg可以显示线程名称吗?

Windbg应该理解用于将线程名称传递给调试器的MS异常协议.

我不能让这个工作.在网上看,有很多例子显示没有线程名称的"〜"线程列表,这就是我所看到的.我正在调试.NET x86进程,我已经尝试了WDK 8.1 x86和x64版本的Windbg.

有谁知道这个功能是否仍然可用?我错过了什么?

.net windows debugging windbg

11
推荐指数
1
解决办法
1759
查看次数

.NET异步\等待基础

在使用.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)

该程序将按以下顺序运行:

  1. 新的HttpClient.
  2. GetStringAsync同步调用.
  3. 在某些时候,GetStringAsync调用await,控件返回AccessTheWebAsync.
  4. 调用了DoIndependentWork.
  5. 程序等待返回的字符串(如果操作没有完成则阻塞).
  6. 返回urlContent的长度.

我花了一些时间来理解的一件事是,该方法GetStringAsync尽管其名称同步运行(名称约定确实具有误导性).

在我们异步运行该方法的过程中,我们需要使用Task.RunTask.Factory.StartNew明确地使用.

但真正的问题是,如果我们有独立的工作,为什么不马上做,而不是等待等待从GetStringAsync调用?(换句话说,为什么异步方法不能按定义异步运行?)

编辑: 我将改写第二和第三个操作:

(2)GetStringAsync同步启动.

(3)在某些时候,GetStringAsync调用await和线程分叉,控件返回AccessTheWebAsync.

.net c# asynchronous async-await c#-5.0

5
推荐指数
1
解决办法
4910
查看次数

标签 统计

.net ×2

async-await ×1

asynchronous ×1

c# ×1

c#-5.0 ×1

debugging ×1

windbg ×1

windows ×1