private void ConnectWorker_DoWork(object sender, DoWorkEventArgs e) { string[] argument = e.Argument as string[]; ipcon = new IPConnection(); try { relay = new BrickletIndustrialQuadRelay(argument[2], ipcon); } catch (ArgumentOutOfRangeException) { e.Result = ConnectResult.NO_DEVICE; return; } try { ipcon.Connect(argument[0], Convert.ToInt32(argument[1])); } catch (System.IO.IOException) { e.Result = ConnectResult.NO_CONNECTION; return; } catch (ArgumentOutOfRangeException) { e.Result = ConnectResult.NO_CONNECTION; return; } try { string uid; string connectedUid; char position; byte[] hardwareVersion; byte[] firmwareVersion; int deviceIdentifier; relay.GetIdentity(out uid, out connectedUid, out position, out hardwareVersion, out firmwareVersion, out deviceIdentifier); if (deviceIdentifier != BrickletIndustrialQuadRelay.DEVICE_IDENTIFIER) { ipcon.Disconnect(); e.Result = ConnectResult.NO_DEVICE; return; } } catch (TinkerforgeException) { try { ipcon.Disconnect(); } catch (NotConnectedException) { } e.Result = ConnectResult.NO_DEVICE; return; } e.Result = ConnectResult.SUCCESS; }