public WriteableBitmap(int pixelWidth, int pixelHeight) : base() { _buffer = new InMemoryBuffer(pixelWidth * pixelHeight * 4); PixelWidth = pixelWidth; PixelHeight = pixelHeight; }
public void ShouldWaitForEnqueue() { var buffer = new InMemoryBuffer(); var stop = false; var attemptsToRead = 0; var thread = new Thread(() => { while (!stop) { var message = buffer.WaitOneAndPeek(CancellationToken.None); Thread.Sleep(1); attemptsToRead++; if (message != null) { buffer.Dequeue(CancellationToken.None); } } }); thread.Start(); for (int i = 0; i < 10; i++) { Task.Factory.StartNew(() => { buffer.Enqueue(new RawMessage(new byte[0], string.Empty), CancellationToken.None); buffer.Enqueue(new RawMessage(new byte[0], string.Empty), CancellationToken.None); }); } Thread.Sleep(25); stop = true; Assert.AreEqual(20, attemptsToRead); }
Message __Unpack(List <Packet> packets) { var buffer = new InMemoryBuffer(); Message message = null; foreach (var p in packets) { message = Message.Unpack(p.Payload, buffer); } return(message); }
public async Task Bysky() { try { var buffer = new InMemoryBuffer(); var bytes = "1204043F0D01286A1E27669F08768272FA8125E0B0BFCC6A0E14610A3481EFF952B4B05CFC2F53E7D2E013AEA013560F103035C55933596F5A4ED89BD6EB046DCD1C00CA".ToByteArray(); var m = MessageMT.Unpack(bytes, buffer) as ChatMessageMT; } catch (Exception e) { } }
public void PackLegacy() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); try { var buffer = new InMemoryBuffer(); //var bytes = "118B26010037393939393734303536323A46524F4D373939393937343035363228382E362E32302D31303A33352855544329293A20CFF0E8E2E5F2".ToByteArray(); var bytes1 = "119607010037393939373136383933384062792D736B792E6E65743AD2E5F1F220322031323A3237".ToByteArray(); var m1 = Legacy_MessageMT.Unpack(bytes1, buffer); } catch (Exception e) { } }
public async Task ShouldWaitForEnqueue() { var buffer = new InMemoryBuffer(); var cts = new CancellationTokenSource(); var attemptsToRead = 0; var thread = new Thread(() => { while (!cts.IsCancellationRequested) { try { var message = buffer.WaitOneAndPeek(cts.Token); Thread.Sleep(50); attemptsToRead++; if (message != null) { buffer.Dequeue(cts.Token); } } catch (OperationCanceledException) { //that's ok ) } } }); thread.Start(); var writeTasks = Enumerable.Range(0, 10).Select(i => Task.Factory.StartNew(() => { buffer.Enqueue(new RawMessage(new byte[0], string.Empty), cts.Token); buffer.Enqueue(new RawMessage(new byte[0], string.Empty), cts.Token); }) ); await Task.WhenAll(writeTasks); await Task.Delay(TimeSpan.FromSeconds(2)); cts.Cancel(); Assert.AreEqual(20, attemptsToRead); }