コード例 #1
0
ファイル: Socket.cs プロジェクト: soywiz/NodeNet
        public void SendAsync(byte[] Data, Action Callback = null)
        {
            var DataCopy = new byte[Data.Length];

            Array.Copy(Data, DataCopy, Data.Length);

            var BuffersCopy = new List <ArraySegment <byte> >()
            {
                new ArraySegment <byte>(DataCopy)
            };

            AsyncQueue.Add(() =>
            {
                try
                {
                    NativeSocket.BeginSend(BuffersCopy, SocketFlags.None, (IAsyncResult) =>
                    {
                        SocketError SocketError;
                        NativeSocket.EndSend(IAsyncResult, out SocketError);
                        Core.EnqueueTask(() =>
                        {
                            if (Callback != null)
                            {
                                Callback();
                            }
                            AsyncQueue.Next();
                        });
                    }, null);
                }
                catch (SocketException SocketException)
                {
                    SocketExceptionThrown(SocketException);
                }
            });
        }
コード例 #2
0
 public override void Invalidate(Rectangle rect, bool invalidateChildren)
 {
     if (NeedsQueue)
     {
         AsyncQueue.Add(() => Invalidate(rect, invalidateChildren));
         return;
     }
     base.Invalidate(rect, invalidateChildren);
 }
コード例 #3
0
ファイル: Manager.cs プロジェクト: EynsherKiel/Twill
 internal void Save(Interfaces.Files.IInteraction sysinteraction, string data)
 {
     AsyncQueue.Add(() => sysinteraction.Save(data));
 }
コード例 #4
0
 public void AddItemToQueue(Action action, Action <Exception> errorCallback = null)
 {
     _asyncQueue.Add(new TaskDescriptor(action, errorCallback));
 }
コード例 #5
0
 public void Log(LogEntry entry)
 {
     messageQueue.Add(entry);
 }
コード例 #6
0
 public void Write(LiftEvent item)
 => _events.Add(item);