public void Dispose()
 {
     if (Interlocked.Exchange(ref disposed, 1) == 0)
     {
         Dispose(true);
         GC.SuppressFinalize(this);
         OnDisposed();
         LeakChecker.Destruct(handle);
     }
 }
Beispiel #2
0
        public static void TestMain()
        {
            CancellationTokenSource cancel = new CancellationTokenSource();

            //Console.Write("Mode>");
            //string mode = Console.ReadLine();

            Thread thread = new Thread(() =>
            {
                Console.ReadLine();

                cancel.Cancel();
            });

            thread.IsBackground = true;
            thread.Start();

            try
            {
                //Test_Pipe_TCP_Client(cancel.Token).Wait();

                Test_Pipe_SslStream_Client(cancel.Token).Wait();

                //Test_Pipe_SpeedTest_Client("speed.sec.softether.co.jp", 9821, 32, 3 * 1000, SpeedTest.ModeFlag.Upload, cancel.Token).Wait();
                //Test_Pipe_SpeedTest_Server(9821, cancel.Token).Wait();

                //if (mode.StartsWith("s", StringComparison.OrdinalIgnoreCase))
                //{
                //    Test_Pipe_SpeedTest_Server(9821, cancel.Token).Wait();
                //}
                //else
                //{
                //    //Test_Pipe_SpeedTest_Client("speed.sec.softether.co.jp", 9821, 32, 60 * 60 * 1000, SpeedTest.ModeFlag.Download, cancel.Token).Wait();
                //    Test_Pipe_SpeedTest_Client("127.0.0.1", 9821, 32, 5 * 1000, SpeedTest.ModeFlag.Upload, cancel.Token).Wait();
                //}

                //Test_Pipe_SpeedTest_Server(9821, cancel.Token).Wait();


                //WebSocketHelper.WaitObjectsAsync
            }
            catch (Exception ex)
            {
                WriteLine("TestMain: " + ex.GetSingleException());
            }
            finally
            {
                LeakChecker.Print();
            }
        }
Beispiel #3
0
        public Mutant(string name, bool nonBlock, bool selfThread)
        {
            this.Name     = name;
            this.NonBlock = nonBlock;
            this.Leak     = LeakChecker.Enter(LeakCounterKind.Mutant);

            try
            {
                Worker = new SingleThreadWorker($"Mutant - '{this.Name}'", selfThread);

                Worker.ExecAsync(p =>
                {
                    MutantBase = MutantBase.Create(name);
                }, 0)._GetResult();
            }
            catch
            {
                this._DisposeSafe();
                throw;
            }
        }
    public void MemoryHelperTest()
    {
        Where();

        LeakChecker.Enter();

        Assert.True(MemoryHelper._UseFast);

        string rand = Str.GenRandStr();

        Memory <byte> mem1 = rand._GetBytes_Ascii();

        var seg1  = mem1._AsSegment();
        var data1 = seg1.ToArray();

        Assert.Equal(0, mem1.Span.SequenceCompareTo(data1));

        var seg1Slow  = mem1._AsSegmentSlow();
        var data1Slow = seg1Slow.ToArray();

        Assert.Equal(0, mem1.Span.SequenceCompareTo(data1Slow));

        ReadOnlyMemory <byte> mem2 = rand._GetBytes_Ascii();

        var seg2  = mem2._AsSegment();
        var data2 = seg2.ToArray();

        Assert.Equal(0, mem2.Span.SequenceCompareTo(data2));

        var seg2Slow  = mem2._AsSegmentSlow();
        var data2Slow = seg2Slow.ToArray();

        Assert.Equal(0, mem2.Span.SequenceCompareTo(data2Slow));

        Where();
    }
 public DisposableObject()
 {
     handle = GCHandle.Alloc(this, GCHandleType.Weak);
     LeakChecker.Construct(handle, GetType().FullName);
 }