zoukankan      html  css  js  c++  java
  • WaitHandle.WaitOne的第二参数

    using System;
    using System.Threading;
    using System.Runtime.Remoting.Contexts;

    namespace ConsoleApplication4
    {
        [Synchronization]
        public class MyCounter : ContextBoundObject
        {

            private int _expectedCounterVal;
            private int _currentCounterVal;
            private ManualResetEvent _event = new ManualResetEvent(false);

            public void WaitUntilCounterIs(int counterVal)
            {
                _expectedCounterVal = counterVal;
                _event.WaitOne(TimeSpan.FromDays(1), true);
            }

            public void IncrementCounter()
            {
                if (++_currentCounterVal >= _expectedCounterVal)
                {
                    _event.Set();
                }
            }


            static void Main()
            {
                MyCounter counter = new MyCounter();
                Output("Main starting.");
                ThreadPool.QueueUserWorkItem(new WaitCallback(WorkThreadAddCounter), counter);
                counter.WaitUntilCounterIs(10);
                Output("Main ending.");
            }

            static void WorkThreadAddCounter(object counter)
            {
                Output("Work starting.");
                for (int i = 0; i < 20; i++)
                {
                    Thread.Sleep(10);
                    ((MyCounter)counter).IncrementCounter();
                    Output(i.ToString());
                }
                Output("Work ending.");
            }

            static void Output(string text)
            {
                Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + text);
            }
        }


    }
  • 相关阅读:
    Java反射之访问私有属性或方法
    java字符串中显示双引号
    什么导致spring事务失效
    ActiveMq性能优化
    JFrame关闭事件处理
    c3p0数据库连接池死锁问题
    Mongodb性能优化
    Spring事务配置的五种方式
    ActiveMq启动停止
    JScrollPane动态加载图片
  • 原文地址:https://www.cnblogs.com/mxw09/p/1983351.html
Copyright © 2011-2022 走看看