public static SharedObject <T> CreateSharedObject <T>(int id, bool sender = false) { if (sender) { return(SharedObject <T> .CreateSender(id)); } return(SharedObject <T> .CreateReciever(id)); }
internal static SharedObject <T> CreateSender(int id) { var obj = new SharedObject <T>(); obj.ID = id; obj.communicator = new MemoryMappedFileCommunicator($"{id.ToString()}.shared", 4096); obj.communicator.ReadPosition = 2000; obj.communicator.WritePosition = 0; obj.communicator.DataReceived += (s, e) => { var o = Signal.Serializer.Deserialize <T>(e.Data); obj._callbacks.ForEach(_ => { _(o); }); }; obj.communicator.StartReader(); return(obj); }