private static void FswSend(Program.AppMessage msg, int lParam) { FswEnsurePaths(); IpcMessage ipcMsg = new IpcMessage(); byte[] pbID = CryptoRandom.Instance.GetRandomBytes(8); ipcMsg.ID = MemUtil.BytesToUInt64(pbID); ipcMsg.Time = DateTime.UtcNow.ToBinary(); ipcMsg.Message = msg; ipcMsg.LParam = lParam; // Send just to others, not to own m_vProcessedMsgs.Add(ipcMsg); for (int r = 0; r < IpcComRetryCount; ++r) { try { List <IpcMessage> l = ReadMessagesPriv(); CleanOldMessages(l); l.Add(ipcMsg); MemoryStream ms = new MemoryStream(); BinaryWriter bw = new BinaryWriter(ms); bw.Write(IpcFileSig); bw.Write((uint)l.Count); for (int j = 0; j < l.Count; ++j) { IpcMessage.Serialize(bw, l[j]); } byte[] pbPlain = ms.ToArray(); bw.Close(); ms.Close(); byte[] pbFile = ProtectedData.Protect(pbPlain, IpcOptEnt, DataProtectionScope.CurrentUser); FileStream fsWrite = new FileStream(m_strMsgFilePath, FileMode.Create, FileAccess.Write, FileShare.None); fsWrite.Write(pbFile, 0, pbFile.Length); fsWrite.Close(); break; } catch (Exception) { } Thread.Sleep(IpcComRetryDelay); } CleanOldMessages(m_vProcessedMsgs); }