Ich benutze Webrequest, um einige Bilddaten zu holen. Die URL könnte irgendwann ungültig werden. Im Falle einer ungültigen URL benötigt begingetresponse Zeit, die der Timeout-Zeit entspricht. Außerdem reagiert das Steuerelement während dieses Zeitraums nicht mehr. Mit anderen Worten funktioniert der asynchrone Rückruf nicht asynchron. Ist das erwartetes Verhalten?webrequest.begingetresponse benötigt zu viel Zeit, wenn die URL ungültig ist
try
{
// Async requests
WebRequest request = WebRequest.Create(uri);
request.Timeout = RequestTimeOut;
RequestObject requestObject = new RequestObject();
requestObject.Request = request;
request.BeginGetResponse(this.ProcessImage, requestObject);
}
catch (Exception)
{
ShowErrorMessage(uri);
}
private void ProcessImage(IAsyncResult asyncResult)
{
try
{
RequestObject requestObject = (RequestObject)asyncResult.AsyncState;
WebRequest request = requestObject.Request;
WebResponse response = request.EndGetResponse(asyncResult);
Bitmap tile = new Bitmap(response.GetResponseStream());
// do something
}
catch (Exception)
{
ShowErrorMessage();
}
}
Nein, erwartetes Verhalten wäre, dass die Benutzeroberfläche reagiert, wenn Sie BeginGetResponse verwenden. Können Sie uns einen Code-Ausschnitt zeigen, in dem Sie BeginGetResponse aufrufen? – bernhof
Haben Sie eine Möglichkeit, diese URL zu validieren, bevor Sie sie senden? Ich vermute, dass der Server, den Sie anfordern, eine Blackbox für Sie ist, haben Sie keinen Zugriff auf diesen Code? – Sebastian
Ich denke, ich muss die URL vor der Verwendung validieren, anstatt blind die URL zu verwenden. Muss mehr Code schreiben :( – malay