private void ProcessStatus(object status) { ProcessStatusData processStatus = (ProcessStatusData)status; if (processStatus.connected) { SetStatusConnected(); } else if (!processStatus.connected) { SetStatusDisconnected(); } }
private static void BroadcastThread(SynchronizationContext context, ProcessStatusDelegate callback, BroadcastProcess.TickRates tickRates) { while (true) { try { BroadcastProcess process = new BroadcastProcess(tickRates); while (true) { process.Tick(); ProcessStatusData status = new ProcessStatusData { connected = true, error = false, message = "Connected." }; context.Post(new SendOrPostCallback(callback), status); Thread.Sleep(100); } } catch (ThreadAbortException e) { ProcessStatusData status = new ProcessStatusData { connected = false, error = false, message = "Broadcast terminated." }; context.Post(new SendOrPostCallback(callback), status); return; } catch (COMException e) { ProcessStatusData status = new ProcessStatusData { connected = false, error = true, message = "Connection to Prepar3d failed." }; context.Post(new SendOrPostCallback(callback), status); } // We'll try to reconnect once a second. Thread.Sleep(1000); } }