Пример #1
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            if (sw == false)
            {
                //計測開始

                myStopWatch.Start();

                //表示更新タイマー開始

                timer2.Start();

                //スイッチon

                sw = true;

                //リセットボタン使用不可

                btnReset.Enabled = false;

                //「スタート」だったボタンの表示を「ストップ」に変更

                btnStart.Text = "ストップ";
            }
            //スイッチがoff以外のとき(つまりはonのとき
            else
            {
                // 実行するデリゲートを作成
                SampleDelegate sampleDelegate =
                    new SampleDelegate(this.DelegatingMethod);

                //計測終了

                //myStopWatch.Stop();

                //表示固定

                //timer2.Stop();

                label3.Text = myStopWatch.Elapsed.ToString();

                // 非同期で呼び出す
                IAsyncResult ar =
                    sampleDelegate.BeginInvoke(@"C:\Test\TimeRecord.txt", label3.Text + System.Environment.NewLine
                                               , null, null);

                //スイッチoff

                sw = false;

                //リセットボタン使用可

                btnReset.Enabled = true;

                //「ストップ」だったボタンの表示を「スタート」に変更

                btnStart.Text = "スタート";
            }
        }
Пример #2
0
    private void Start()
    {
        SampleDelegate counter = CountCharacters;
        SampleDelegate parser  = Parse;

        var counterResult = counter.BeginInvoke("hello", null, null);
        var parserResult  = parser.BeginInvoke("10", null, null);

        print("Основной поток с ID = " + Thread.CurrentThread.ManagedThreadId + " продолжает выполняться");

        print("Счетчик вернул " + counter.EndInvoke(counterResult));
        print("Парсер вернул " + parser.EndInvoke(parserResult));

        print("Основной поток с ID = " + Thread.CurrentThread.ManagedThreadId + " завершился");
    }
Пример #3
0
        static void Main(string[] args)
        {
            SampleDelegate counter = new SampleDelegate(CountCharacters);
            SampleDelegate parser  = new SampleDelegate(Parser);

            IAsyncResult couterResult = counter.BeginInvoke("hello", null, null);          //这里不会堵塞
            IAsyncResult parserResult = parser.BeginInvoke("10", null, null);              //这里不会堵塞

            Console.WriteLine("Main thread continuing");

            Console.WriteLine("Counter returned {0}", counter.EndInvoke(couterResult));  //会在这里堵塞
            Console.WriteLine("Parser returned {0}", parser.EndInvoke(parserResult));    //会在这里堵塞

            Console.WriteLine("Done");
            Console.ReadKey();
        }
Пример #4
0
        static void Main(string[] args)
        {
            SampleDelegate counter = new SampleDelegate(CountCharacters);
            SampleDelegate parser  = new SampleDelegate(Parser);

            AsyncCallback callback = new AsyncCallback(DisplayResult);     //回调函数  !!!!!!!!!!

            counter.BeginInvoke("hello", callback, "Counter returned {0}");
            parser.BeginInvoke("10", callback, "Parser returned {0}");

            Console.WriteLine("Main thread continuing");

            //Thread.Sleep(3000);
            Console.WriteLine("Done");
            Console.ReadKey();
        }
Пример #5
0
        static void Main(string[] args)
        {
            // class instance
            Program p = new Program();

            // -- delegates
            //FirstDelegate del = new FirstDelegate(p.Hello);
            //FirstDelegate del2 = new FirstDelegate(p.Hello);
            //FirstDelegate del3 = new FirstDelegate(p.Hello);

            //FirstDelegate del_comb = del + del2 + del3;
            //Console.WriteLine(del_comb(23));

            //Console.WriteLine(del(10));
            //Console.WriteLine(del(12));
            //Console.WriteLine(del(23));
            //Console.WriteLine(del.Method.Name);
            //Console.WriteLine(del.Target.ToString());

            // -- events
            //ClassWithEvents cwe = new ClassWithEvents();
            //cwe.FirstEvent += firstEventHandler;
            //cwe.CallEvent(34);

            //cwe.SomeThreadSafeEvent += SomeThreadSafeEventHandler;
            //cwe.CallEvent_TS(989);

            //Console.WriteLine(new string('-', 80));
            //cwe.SomeThreadSafeEvent -= SomeThreadSafeEventHandler;
            //cwe.CallEvent_TS(989);

            // -- async delegates
            SampleDelegate counter = new SampleDelegate(CountCharacters);
            SampleDelegate parser  = new SampleDelegate(Parse);
            // EndInvoke blocks main thread and wait for result
            //IAsyncResult counterResult = counter.BeginInvoke("hello", null, null);
            //IAsyncResult parserResult = parser.BeginInvoke("20", null, null);
            //Console.WriteLine("Main thread continued.");

            //Console.WriteLine("Counter returned : {0}",counter.EndInvoke(counterResult));
            //Console.WriteLine("Parser returned : {0}",parser.EndInvoke(parserResult));

            // EndInvoke not blocks main thread
            AsyncCallback callBack = new AsyncCallback((result) =>
            {
                string format = result.AsyncState as string;
                AsyncResult delefateResult      = result as AsyncResult;
                SampleDelegate delegateInstance = delefateResult.AsyncDelegate as SampleDelegate;

                if (delegateInstance != null)
                {
                    Console.WriteLine(format, delegateInstance.EndInvoke(result));
                }
            });

            counter.BeginInvoke("hello", callBack, "Counter returned {0}");
            parser.BeginInvoke("10", callBack, "Parser returned {0}");

            Console.WriteLine("Main thread continued.");

            Console.WriteLine("Done.");

            Console.ReadLine();
        }