我有一個C#窗體窗體應用程序,並使用一個不提供異步等待功能的庫。在不阻塞GUI線程的情況下工作
當我按下按鈕時,我想做一些工作(webrequesting)。 在做這項工作時,我不想凍結我的gui。
我試過多種方法,例如:
public static Task<bool> LoginUser(string username, string password)
{
return Task.Factory.StartNew(() =>
{
try
{
session = new AuthenticatedSession<User>(new User(username), Cryptography.GetMd5(password));
return true;
}
catch (InvalidAuthenticationException)
{
return false;
}
});
}
當我打電話LoginUser("foo", "bar").Result
的GUI凍結,直至工作完成(我明白,這是不是異步,因爲我不能等待new AuthenticatedSession<..
所以我期待這樣的事情:
- 用行動爲參數創建一個線程
- 返回從螺紋
- 值結束線程
庫提供的方法是否使用[Asynchronous Programming Model](https://msdn.microsoft.com/en-us/library/ms228963%28v=vs.110%29.aspx)(又名'BeginInvoke'和'EndInvoke')?你在.Net 4.5或更高版本?你有沒有看過[continuations](https://msdn.microsoft.com/en-us/library/dd270696%28v=vs.110%29.aspx)?我們*真的需要了解更多關於您的開發環境以幫助解決這個問題。 – Cameron