/// <summary> /// The function called when a client connects to the named pipe. Note: This method is called on a non-UI thread. /// </summary> /// <param name="iAsyncResult"></param> private void NamedPipeServerConnectionCallback(IAsyncResult iAsyncResult) { try { // End waiting for the connection _namedPipeServerStream.EndWaitForConnection(iAsyncResult); // Read data and prevent access to _namedPipeXmlPayload during threaded operations lock (_namedPiperServerThreadLock) { // Read data from client var xmlSerializer = new XmlSerializer(typeof(NamedPipeXmlPayload)); _namedPipeXmlPayload = (NamedPipeXmlPayload)xmlSerializer.Deserialize(_namedPipeServerStream); // _namedPipeXmlPayload contains the data sent from the other instance // As an example output it to the textbox // In more complicated cases would need to do some processing here and possibly pass to UI thread ////////////////// ////////////////// ////////////////// ////////////////// /// } } catch (ObjectDisposedException) { // EndWaitForConnection will exception when someone closes the pipe before connection made // In that case we dont create any more pipes and just return // This will happen when app is closing and our pipe is closed/disposed return; } catch (Exception) { // ignored } finally { // Close the original pipe (we will create a new one each time) _namedPipeServerStream.Dispose(); } // Create a new pipe for next connection NamedPipeServerCreateServer(); FormsExternalStuff.RecievedMessageCheck(_namedPipeXmlPayload.Payload[0].ToString()); }
private static void AbrirNotifyIcon() { FormsExternalStuff.InitializeNotifyIcon(); }