让我们说我有两个类。这里是被称为互联网第一类中的相关代码:C# - 句柄异常并停止执行
public void doRequest()
{
string URL = "http://localhost:4000/HomePage.aspx";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
}
public void GetRequestStreamCallback(IAsyncResult callbackResult)
{
HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
Stream postStream = myRequest.EndGetRequestStream(callbackResult);
byte[] byteArray = Encoding.UTF8.GetBytes("Test Message");
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), myRequest);
}
public void GetResponsetStreamCallback(IAsyncResult callbackResult)
{
HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.EndGetResponse(callbackResult);
StreamReader httpWebStreamReader = new StreamReader(response.GetResponseStream());
string result = httpWebStreamReader.ReadToEnd();
}
catch (WebException)
{
Deployment.Current.Dispatcher.BeginInvoke(() => MessageBox.Show("Error: Could not reach the web service"));
}
}
此代码是由一类调用MainPage.xaml.cs中称为:
private void Button_LogIn_Click(object sender, RoutedEventArgs e)
{
Internet net = new Internet();
bool check = net.checkInternet();
if (check.Equals(false))
{
}
else
{
net.doRequest();
ClientServiceSoapClient web_service = new ClientServiceSoapClient();
web_service.LogInCompleted += new System.EventHandler<LogInCompletedEventArgs>(LogInComplete);
web_service.LogInAsync(TextBox_Username.Text, TextBox_Password.Password);
}
}
我想的是,如果一个在doRequest方法调用中发生异常,将处理该异常(WebException在类的末尾),然后停止执行后面的代码(ClientServiceSoapClient web_service ....)。
我该怎么做?
我已经尝试了你的方法,但是第二次返回后的代码仍在执行。如果发生异常,我不希望该代码执行。 – Matthew 2013-04-23 14:06:04
@Mthethew更新了代码,试试这个 – Dave 2013-04-23 14:07:03
问题仍然存在:(我认为这是由于Web服务以异步模式运行的事实。 – Matthew 2013-04-23 14:10:02