我目前遇到了一个问题,有某些东西阻塞了我的UI线程。我知道它发生在以下函数中:
public async Task<string> function(string username, string password, string handle)
{
try
{
string finalStr;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://url.com");
request.CookieContainer = cookie;
request.AllowAutoRedirect = true;
var response = await request.GetResponseAsync();
string str = new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
string str2 = this.getToken(str, "_token\" value=\"", "\">", 0);
string[] textArray1 = new string[] { "postVariables=" + str2 };
HttpWebRequest httpWebRequest_0 = (HttpWebRequest)WebRequest.Create("https://url.com");
httpWebRequest_0.CookieContainer = cookie;
httpWebRequest_0.Method = "POST";
httpWebRequest_0.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
httpWebRequest_0.Referer = "https://twitter.com/settings/account";
httpWebRequest_0.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
httpWebRequest_0.AllowAutoRedirect = true;
httpWebRequest_0.ContentType = "application/x-www-form-urlencoded";
byte[] bytes = Encoding.ASCII.GetBytes(string.Concat(textArray1));
httpWebRequest_0.ContentLength = bytes.Length;
Stream requestStream = await httpWebRequest_0.GetRequestStreamAsync();
await requestStream.WriteAsync(bytes, 0, bytes.Length);
var response2 = await httpWebRequest_0.GetResponseAsync();
using (StreamReader reader = new StreamReader(response2.GetResponseStream()))
{
finalStr = reader.ReadToEnd();
}
if (finalStr.Contains(handle))
{
return "success";
}
else
{
requestStream.Close();
return "error";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我认为这是函数的这一部分:
HttpWebRequest httpWebRequest_0 = (HttpWebRequest)WebRequest.Create("https://url.com");
我该如何创建一个
async
WebRequest.Create? 我是否还做错了其他事情?感激任何帮助与建议。
WebRequestPrefixElement.Creator
属性。我在 Internal.cs 中除了在else //!FEATURE_PAL
部分中被禁用的NclUtilities.GetLocalHost
函数中没有看到任何地方调用 Dns.GetHostByName。 - Scott Chamberlain