当我尝试以下代码时:
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout = 3; // a small value
var response = request.GetResponse();
Console.WriteLine(response.ContentLength);
对于我知道加载时间超过3毫秒的网址(我在Thread.Sleep(110000)
中添加了Application_BeginRequest
)它可以正常工作并按预期抛出WebException
。
当我切换到异步方法时出现问题:
var response = request.GetResponseAsync().Result;
或
var response = await request.GetResponseAsync();
此异步版本完全忽略任何超时值,包括ReadWriteTimeout
和ServicePoint.MaxIdleTime
我无法在MSDN GetResponseAsync()
中找到有关Timeout的任何内容,现在我想知道它是GetResponseAsync()
中的错误还是我的方式出错了在这里使用异步?
答案 0 :(得分:17)
答案 1 :(得分:0)
按照解决问题的方法进行解决。
If sheetName <> "" Then
Workbooks.Open "C:\Users\jschu\Desktop\price test\Quote_Database.xlsx"
Workbooks("Quote_Database.xlsx").Sheets(sheetName).Select
Else
Workbooks.Open "C:\Users\jschu\Desktop\price test\Quote_Database.xlsx" ' Open Quote Database file
idNumber = Format(Now, "YYMMDDHHSS") ' Generate unique #
sheetName = idNumber & " " & UserForm3.nameText
With Workbooks("Quote_Database.xlsx") ' Finds the last sheet then adds a new sheet with the idnumber and customer name
.Sheets.Add(After:=.Sheets(.Sheets.count)).Name = sheetName
End With
End If