小编Dav*_*inP的帖子

如何使任务等待

昨天我开始玩Microsoft CTP异步库,无处找不到正常实现的等待任务.我知道它必须有这样的实现吗?:

public struct SampleAwaiter<T>
{
    private readonly Task<T> task;
    public SampleAwaiter(Task<T> task) { this.task = task; }
    public bool IsCompleted { get { return task.IsCompleted; } }
    public void OnCompleted(Action continuation) { TaskEx.Run(continuation); }
    public T GetResult() { return task.Result; }
}
Run Code Online (Sandbox Code Playgroud)

但是,我现在如何实现一个任务,比如等待5秒,然后返回一些字符串,例如"Hello World"?

一种方法是直接使用Task,如下所示:

Task<string> task = TaskEx.Run(
            () =>
                {
                    Thread.Sleep(5000);
                    return "Hello World";
                });

        string str = await task;
Run Code Online (Sandbox Code Playgroud)

但是,如何通过等待实施来做到这一点?或者我只是误解了一切?

感谢您的任何信息/帮助:)

c# async-await async-ctp

9
推荐指数
1
解决办法
2万
查看次数

获取确切的监视器/显示/屏幕名称

我有一个程序,用户可以选择目标监视器,但是我无法获得真实的监视器名称/型号。

我已经尝试了以下方法:

  • Screen.AllScreens没有用;
  • WMI和Win32 EnumDisplayDevices都返回通用PnP监视器。
  • 设备管理器还显示通用PnP监视器...

在资源管理器中,有显示器的实际名称,在珠穆朗玛峰中,它显示了更深的细节...

这两个程序从哪里获得这些信息?我碰到的最后一个选项是从注册表中解析EDID……有人尝试过此方法吗?

c# desktop-application winforms

0
推荐指数
1
解决办法
4763
查看次数