Возможно, проблема в том, что ваш код выдает исключение, о котором вы не знаете.Проблема в коде, который обрабатывает нажатую кнопку.
protected void OnButton1Clicked(object sender, EventArgs e)
{
ChatService client = new ChatService();
int x = Int32.Parse(entry1.Text);
int y = Int32.Parse(entry2.Text);
int sum = client.Add(x, y);
entry1.Text = sum.ToString();
}
Давайте построчно:
ChatService client = new ChatService();
Здесь вы создаете новый экземпляр того, что кажетсясистемный сервис или, возможно, веб-сервисы.Это может произойти, если служба неизвестна (в первом случае), или если соединение прервано или не достигает места назначения и т. Д., Во втором случае.
Эти строки также деликатны:
int x = Int32.Parse(entry1.Text);
int y = Int32.Parse(entry2.Text);
Они будут выбрасывать, если поле entry1
или entry2
пустое или содержит букву ...
Для управления этими случаями необходимо добавить try... catch
блоки в соответствующих местах.В качестве альтернативы вы можете использовать Int32.TryParse.
Например, если предположить, что служба находится в Интернете:
protected void OnButton1Clicked(object sender, EventArgs e)
{
ChatService client;
int x;
int y;
try {
client = new ChatService();
} catch(HttpRequestException exc) {
client = null;
var dlg = new Gtk.MessageDialog(
this,
Gtk.DialogFlags.Modal,
Gtk.MessageType.Error,
Gtk.ButtonsType.Ok,
"Connection error"
);
dlg.Text = exc.Message;
dlg.Run();
dlg.Destroy();
}
if ( client != null ) {
if ( !int.TryParse( entry1.Text, out x) {
entry1.Text = "0";
x = 0;
}
if ( !int.TryParse( entry2.Text, out y) {
entry2.Text = "0";
y = 0;
}
int sum = client.Add(x, y);
entry1.Text = sum.ToString();
}
}
Конечно, всегда трудно получить код, который корректно обрабатывает ошибки.Надеюсь, это поможет.