注册 登录
编程论坛 C# 论坛

新手问,我这个怎么执行暂停

沉默的痞子 发布于 2020-03-28 16:45, 3805 次点击
程序代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Threading;
namespace cs
{
    class Program
    {

        static void Main(string[] args)
        {
            Guo锅 g = new Guo锅();
            g.CCEvent += G_CCEvent;
            g.Play();
            string r = Console.ReadLine();
            if (r == "s")
            {
                g.Stop();
            }
        }

        private static void G_CCEvent(string Msg)
        {
            Console.WriteLine(Msg);
            //throw new NotImplementedException();
        }
    }
    public class Guo锅
    {
        public delegate void CC炒菜EventHandler(string Msg);
        public event CC炒菜EventHandler CCEvent;
        private bool State=false;
        public void Play()
        {
            State = true;
            while (State)
            {
                //触发事件
                if (CCEvent != null)
                {
                    CCEvent("炒菜中……" + DateTime.Now.ToString());
                }
                Thread.Sleep(1000);
            }
        }
        public void Stop()
        {
            State = false;
        }
    }


程序开始后,一直显示在炒菜,怎么才能让我输入s然后暂停掉呢?怎么在触发事件这里转移控制权?
3 回复
#2
zj8912182020-03-29 15:26
控制台起还是单线程无法改变单线程顺序执行的过程
#3
沉默的痞子2020-03-31 08:23
回复 2楼 zj891218
有没有DoEvents之类的方法来转移控制权?
#4
zj8912182020-04-04 00:12
回复 3楼 沉默的痞子
不行了,DoEvent还是事件机制了,事件背后还是windows消息机制,控制台类似dos应用没有消息机制
1