none
重复命令截断 await Task.Delay(10000); textBox1.Text += "a"; 这样用几次就会产生几次的值, 怎么只运行一次? RRS feed

  • 问题

  •  if (e.KeyData == (Keys.F8))///快捷键F8
                {

                    await Task.Delay(10000); 十秒后 
                    textBox1.Text += "a";

                }

    这个快捷键按几次 下面的程序就会重复几次操作, 怎么截断操作?按几次都是执行一次?

                          
    2017年2月23日 6:27

答案

  • 我问的别人 我觉得这个办法好点

    int a = 1;
    if (e.KeyData == (Keys.F8)&&a==1)
                {
                    a = 0;
                    await Task.Delay(1000);
                    textBox1.Text += "a";
                }
     if (e.KeyData == (Keys.F12)){a=1;}

    这个是 始终执行一次, 按F12才可以执行下一次

    我自己想的

    if (e.KeyData == (Keys.F8)&&a==1)
                {
                    a = 0;
                    await Task.Delay(10000);
                    textBox1.Text += "a";
                    a = 1;
                }

    程序期间不支持任何操作,执行完后才可以进行操作,我这个办法好点


    2017年2月24日 2:54

全部回复

  • Hi,

    我这有个方法,不知道适不适合你。

    在{ }大括号里面使用一个static变量,一开始 static 变量是0,当按下按键,进入函数,我们让 static 变量变成1,

    我们在判断static变量的值,如果是1,就直接return 出去。这样就确定只执行一次这个函数体。下面是伪代码

    static int a = 0

    void fun()

    {

        if( a== 1) return;

    else

    {

    ......

    }

    }

    希望回答对你有所帮助。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    2017年2月23日 8:58
    版主
  • 我问的别人 我觉得这个办法好点

    int a = 1;
    if (e.KeyData == (Keys.F8)&&a==1)
                {
                    a = 0;
                    await Task.Delay(1000);
                    textBox1.Text += "a";
                }
     if (e.KeyData == (Keys.F12)){a=1;}

    这个是 始终执行一次, 按F12才可以执行下一次

    我自己想的

    if (e.KeyData == (Keys.F8)&&a==1)
                {
                    a = 0;
                    await Task.Delay(10000);
                    textBox1.Text += "a";
                    a = 1;
                }

    程序期间不支持任何操作,执行完后才可以进行操作,我这个办法好点


    2017年2月24日 2:54