gpt4 book ai didi

c# - 使用 Microsoft 异步框架的基础知识

转载 作者:太空狗 更新时间:2023-10-29 23:10:03 25 4
gpt4 key购买 nike

使用 Visual Studio Async CTP(第 3 版),我很难理解如何使用此框架“包装”现有代码。

例如

我尝试使用 OpenPop.NET 库与 pop3 服务器建立连接并确认我拥有有效的用户名和密码。

假设我有一些这样的代码。

    public bool ConnectSync()
{
bool success = true;
Pop3Client client = new Pop3Client();

try
{
client.Connect("mail.server.com", 110, false);
client.Authenticate("username", "password");
}
catch
{
success = false;
}
return success;
}

现在我想让它异步根据我一直在阅读和拼凑的内容我的理解是我最终会得到一个类似于

的方法签名
    public async Task<bool> ConnectAsync()
{

}

我相信这是正确的签名,因为它将是一个返回 bool 值 (?) 的任务,我猜我需要使用 TaskEx.Run() 方法吗?但这就是我所能想到的。谁能指出正确的方向?

最佳答案

是的,到目前为止你是对的。

正如您所说,转换方法的简单方法是将其包装在 TaskEx.Run 中,这样该方法就可以在线程池线程上运行,并且不会阻塞您的 UI 线程。

public Task<bool> ConnectAsync()
{
return TaskEx.Run( () =>
{
bool success = true;
Pop3Client client = new Pop3Client();

try
{
client.Connect("mail.server.com", 110, false);
client.Authenticate("username", "password");
}
catch
{
success = false;
}
return success;
}
);
}

关于c# - 使用 Microsoft 异步框架的基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8725014/

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