Example #1
0
 //6 等待一个特定任务
 static async Task Worker6()
 {
     generator.children children = new generator.children();
     var A = children.tgo(() => Worker("A"));
     var B = children.tgo(() => Worker("B"));
     await children.wait(A);
 }
Example #2
0
        private async Task Task1Action(int time)
        {
            WaitForm waitAction = new WaitForm();

            generator.children children  = new generator.children();
            generator.child    taskChild = children.tgo(async delegate()
            {
                bool cancelTask = false;
                Task task       = Task.Run(delegate()
                {
                    int ct = time / 100;
                    for (int i = 0; i < ct && !cancelTask; i++)
                    {
                        System.Threading.Thread.Sleep(100);
                    }
                });
                try
                {
                    await generator.wait_task(task);
                }
                catch (generator.stop_exception)
                {
                    cancelTask = true;
                    await generator.wait_task(task);
                }
            });
            children.go(async delegate()
            {
                await generator.sleep(500);
                await generator.send_control(this, delegate()
                {
                    waitAction.StartPosition = FormStartPosition.CenterParent;
                    waitAction.ShowDialog();
                });
                if (waitAction.isCancel)
                {
                    taskChild.stop();
                }
            });
            await children.wait(taskChild);

            waitAction.Close();
            await children.stop();
        }