如何在执行某些其他功能时停止某个功能?

时间:2014-04-04 07:33:44

标签: c# windows-phone-8

我有两个功能

   private void Ellipse_ManipulationCompleted_1(object sender, ManipulationCompletedEventArgs e)
    {
        Counter++;
        if (Counter == 1)
        {
            Startbtn_Click(sender, e);

        }
    }


    private async void Startbtn_Click(object sender, RoutedEventArgs e)
    {
            Startbtn.IsEnabled = false;
            Storyboard myStoryboard;
            Random rnd = new Random();
            int Story = rnd.Next(1, 3);

            if (Story == 1)
            {
                myStoryboard = (Storyboard)this.Resources["Storyboard1"];
                myStoryboard.Begin();

            }


            else if (Story == 2)
            {

                myStoryboard = (Storyboard)this.Resources["Storyboard2"];
                myStoryboard.Begin();

            }


            await Task.Delay(12000);

            Startbtn.IsEnabled = true;
            Counter = 0;

    }

我希望当Startbtn_Click运行时Ellipse_ManipulationCompleted_1被禁用,或者它不应被调用。

我是Windows应用开发的新手,所以任何帮助都可以。 提前谢谢

2 个答案:

答案 0 :(得分:2)

Stopping方法完全不同(详见异步编程)。

在您的情况下,您的ManipulationCompleted是一个事件,如果您需要,您可以随时取消订阅:

private async void Startbtn_Click(object sender, RoutedEventArgs e)
{
   // unsubscribe to the Event if you don't want to fire it
      Ellipse.ManipulationCompleted -= Ellipse_ManipulationCompleted_1;
      Startbtn.IsEnabled = false;
   // your further actions
   // ...
   // subscribe again if you need
      Ellipse.ManipulationCompleted += Ellipse_ManipulationCompleted_1;

还有其他解决方案,但这应该很简单并且有效。

答案 1 :(得分:1)

最好有一个单独的按钮来禁用方法Ellipse_ManipulationCompleted_1,因为在使用程序时很容易混淆,禁用和启用此方法的代码都是用一种方法编写的名为Startbtn_Click,所以我建议你将它们分开,以使程序的设计更精确。

接下来你可以做的是执行NotSupportedException,你要标记为Obsolete。完成此操作后,您可以使用EditorBrowsable。 方法如下:

    [EditorBrowsable( EditorBrowsableState.Never )]
    [Obsolete( "...", false )]

    private void Separatebtn_Click(object sender, ManipulationCompletedEventArgs e)
    {
    throw new NotSupportedException( "..." );
    }       

请注意,抛出异常有时很危险,因为它会产生一些其他错误,但如果您只是尝试禁用某个功能,则此选项不会受到太大影响。顺便说一句,这实际上不会删除该方法,因为它只会替换它,现在由您决定选择哪种方法。希望这有用!