c#桌面程序:怎么让程序暂停,等待用户操作。 在一个循环中.. 在线等 。。 急急

时间:2021-09-09 18:31:29
我做的是一个类似 三国杀的游戏,游戏中在一个大循环中需要电脑、玩家循环操作。
   电脑操作用代码解决,那用户操作只有等待玩家来操作了  怎么实现程序暂停等待用户操作。。。   是不是要用多线程   怎么用  以前没用过  麻烦详细点  谢谢


在线等。。。   大大们  给点注意吧

12 个解决方案

#1


Thread.Sleep

#2


怎么用啊  这个没法控制吧  我想要那种 玩家不点击 确定 就一直在那 暂停着  等玩家操作

   

#3


if (!Flag)
                {
                    while (true)
                    {
                        Thread.Sleep(100);
                        if (Flag)
                        {
                            Thread.Sleep(100);
                            break;
                        }
                    }
                }
也许不太适用,这是我做遍历磁盘的一个,加了暂停功能,不过这个是用一个线程启动的递归。
要暂停就传个Flag过去,继续的话再传个Flag。如果你那个是主线程的话,可能就不适用了。

#4


我这个就是主线程,可不可以用timer控件实现啊 

#5


多线程一般啥时候用啊,我做这个棋牌游戏参考的斗地主。里面用线程了,画面可清晰、也不延迟。  而我的那个画面刷新不过来。。。  可卡

#6


IEnumerable<object> Loop()
{
    for (int i = 1; i <= 10000; i++)
    {
        some thing you want to do...
        yield return new object();
    }
}

bool Continue = true;

void Main()
{
    IEnumerator<object> enum = Loop().GetEnumerator();
    enum.Reset();
    while (enum.MoveNext() && Continue) ;
}

在程序其他地方设置 Continue 为 false 就可以暂停。

#7


能不能详细一点 我看不懂啊 

我那个程序给你说一下:   while(判断方法返回值)
                         {
                              for()
                              {
                                   电脑自动操作;
                                   用户操作;(怎么在这暂停,等待用户操作呢)
                                   电脑自动操作;
                               }
                          }

#8


用户的操作是选择适合的牌用在适合的对象身上,等于是 选中牌 和 对象 然后点击确认。。。

   

#9


我觉得要多线程好点,否则界面没反应

#10


多线程原子操作。
不了解多线程。可以补习一下。

#11


楼上的都误解了。

其实,游戏进行暂停状态,并不是意味着应用程序进入休眠!

我的理解是:三国杀玩家操作,要倒计时的,如果超时,就会自动出牌或者PASS。
而暂停其实就是将这个倒计时的钟停止了(比如用户去WC了)。

怎么实现呢:其实显示一个暂停的画面,并且让倒计时钟暂停就可以了(也就是楼主说的那个线程)。然后如果用户点了继续,再回到游戏的画面,让倒计时钟恢复倒计时就可以了!

当然,也可以不用开线程,因为系统本身带有Timer对象!你只需要将Timer对象暂停。


#12


引用 11 楼 dengxm 的回复:
楼上的都误解了。

其实,游戏进行暂停状态,并不是意味着应用程序进入休眠!

我的理解是:三国杀玩家操作,要倒计时的,如果超时,就会自动出牌或者PASS。
而暂停其实就是将这个倒计时的钟停止了(比如用户去WC了)。

怎么实现呢:其实显示一个暂停的画面,并且让倒计时钟暂停就可以了(也就是楼主说的那个线程)。然后如果用户点了继续,再回到游戏的画面,让倒计时钟恢复倒计时就可以了!

……


实现定时器功能就是timer

#1


Thread.Sleep

#2


怎么用啊  这个没法控制吧  我想要那种 玩家不点击 确定 就一直在那 暂停着  等玩家操作

   

#3


if (!Flag)
                {
                    while (true)
                    {
                        Thread.Sleep(100);
                        if (Flag)
                        {
                            Thread.Sleep(100);
                            break;
                        }
                    }
                }
也许不太适用,这是我做遍历磁盘的一个,加了暂停功能,不过这个是用一个线程启动的递归。
要暂停就传个Flag过去,继续的话再传个Flag。如果你那个是主线程的话,可能就不适用了。

#4


我这个就是主线程,可不可以用timer控件实现啊 

#5


多线程一般啥时候用啊,我做这个棋牌游戏参考的斗地主。里面用线程了,画面可清晰、也不延迟。  而我的那个画面刷新不过来。。。  可卡

#6


IEnumerable<object> Loop()
{
    for (int i = 1; i <= 10000; i++)
    {
        some thing you want to do...
        yield return new object();
    }
}

bool Continue = true;

void Main()
{
    IEnumerator<object> enum = Loop().GetEnumerator();
    enum.Reset();
    while (enum.MoveNext() && Continue) ;
}

在程序其他地方设置 Continue 为 false 就可以暂停。

#7


能不能详细一点 我看不懂啊 

我那个程序给你说一下:   while(判断方法返回值)
                         {
                              for()
                              {
                                   电脑自动操作;
                                   用户操作;(怎么在这暂停,等待用户操作呢)
                                   电脑自动操作;
                               }
                          }

#8


用户的操作是选择适合的牌用在适合的对象身上,等于是 选中牌 和 对象 然后点击确认。。。

   

#9


我觉得要多线程好点,否则界面没反应

#10


多线程原子操作。
不了解多线程。可以补习一下。

#11


楼上的都误解了。

其实,游戏进行暂停状态,并不是意味着应用程序进入休眠!

我的理解是:三国杀玩家操作,要倒计时的,如果超时,就会自动出牌或者PASS。
而暂停其实就是将这个倒计时的钟停止了(比如用户去WC了)。

怎么实现呢:其实显示一个暂停的画面,并且让倒计时钟暂停就可以了(也就是楼主说的那个线程)。然后如果用户点了继续,再回到游戏的画面,让倒计时钟恢复倒计时就可以了!

当然,也可以不用开线程,因为系统本身带有Timer对象!你只需要将Timer对象暂停。


#12


引用 11 楼 dengxm 的回复:
楼上的都误解了。

其实,游戏进行暂停状态,并不是意味着应用程序进入休眠!

我的理解是:三国杀玩家操作,要倒计时的,如果超时,就会自动出牌或者PASS。
而暂停其实就是将这个倒计时的钟停止了(比如用户去WC了)。

怎么实现呢:其实显示一个暂停的画面,并且让倒计时钟暂停就可以了(也就是楼主说的那个线程)。然后如果用户点了继续,再回到游戏的画面,让倒计时钟恢复倒计时就可以了!

……


实现定时器功能就是timer