좋은 하루!Mono 및 GTK를 사용하여 XFCE에서 응용 프로그램이 충돌 함 #
나는 내 자신을 알아낼 수 없다는 문제가 있으며, 이번에는 Google이 합당한 제안을하지 못했습니다. 그래서 이것이 마지막 희망입니다.
xfce 데스크탑을 실행하는 데비안으로 포팅하기를 원하는 C#과 WPF로 작성된 애플리케이션이 있습니다. 그것은 MonoDevelop와 GTK #를 사용하여 이루어졌습니다. 이 응용 프로그램은 매우 간단합니다. 지역 운송 회사 일정 제공자의 API에 연결되어 있고 근처 버스 정류장에서 다음 버스 출발을 가져옵니다.
이제 응용 프로그램이 Linux에서 실행되고 필요에 따라 시간표가 업데이트됩니다. 문제는 시작 10 ~ 60 분 후 무작위로 충돌한다는 것입니다. 오류 또는 예외 메시지가 없습니다. 로그에서 아무것도 찾을 수 없었습니다. 그것은 단순히 종료됩니다 (종료) 그리고 그것이 그 것입니다.
나는 실마리가 스레딩이나 부족 또는 그와 관련이있을 수 있습니다. 아래는 MainWindow 메소드의 주요 코드입니다. 아마도 커뮤니티가 나에게 도움을 줄 수 있으며 내가 끔찍한 일을 잘못하고 있다면 발견 할 수 있습니다.
감사합니다.
private static System.Timers.Timer timer;
public MainWindow(): base (Gtk.WindowType.Toplevel)
{
Build();
uiCustomizations();
updateTimetable();
timer = new System.Timers.Timer(180000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(updateTimetable);
timer.Enabled = true;
}
private void updateTimetable (object source = null, ElapsedEventArgs e = null)
{
try {
Log.myLog.AddEntry("Downloading timetable");
ReittiopasConnector ro = new ReittiopasConnector (Parameters.RequestType, Parameters.Stop, Parameters.CurrentTime, Parameters.TimeLimit, Parameters.DepLimit);
Parser data = new Parser (ro.GetXmlStream());
BusDepartures departures132 = new BusDepartures();
data.GetBusSchedule (Parameters.Lines [0]);
departures132.SetDepatures = data.ReturnDepartureTimes();
label_Left_Time1.Text = departures132.Departure;
label_Left_Time2.Text = departures132.FollowingDeparture;
BusDepartures departures503 = new BusDepartures();
data.GetBusSchedule (Parameters.Lines [1]);
departures503.SetDepatures = data.ReturnDepartureTimes();
label_Right_Time1.Text = departures503.Departure;
label_Right_Time2.Text = departures503.FollowingDeparture;
//Bus503.DataContext = departures503;
//}));
} catch (Exception ex) {
Log.myLog.AddEntry("Exception: " + ex.Message);
}
}
디버그 모드에서 응용 프로그램을 컴파일하고 실행하여 시작하십시오. http://mono-project.com/Debugging을보십시오 – dna
왜 System.Timers.Timer를 사용합니까? GTK # 응용 프로그램은'GLib.Timeout', http://docs.go-mono.com/?link=T%3aGLib.Timeout –