C# 如何在执行其他函数时停止函数?

C# 如何在执行其他函数时停止函数?,c#,windows-phone-8,C#,Windows Phone 8,我有两个功能 private void Ellipse_ManipulationCompleted_1(object sender, ManipulationCompletedEventArgs e) { Counter++; if (Counter == 1) { Startbtn_Click(sender, e); } } private async void Star

我有两个功能

   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\u Click运行椭圆时,OperationCompleted\u 1被禁用,否则不应该调用它

我是windows应用程序开发新手,所以任何帮助都可以。
提前感谢

停止方法是完全不同的主题(阅读有关异步编程的更多信息)

在您的情况下,您的操作已完成是一个事件,如果您需要:

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;

还有其他解决办法,但是这应该很简单而且有效。

最好有一个单独的按钮来禁用方法
Ellipse\u操纵完成\u 1
,因为在使用程序时很容易混淆,禁用和启用此方法的代码都写在一个名为
Startbtn\u Click
的方法中,所以我建议您将它们分开,以使程序的设计更精确

接下来,您可以执行一个
NotSupportedException
,将其标记为
过时的
。完成此操作后,您可以使用
EditorBrowsable
。 以下是方法:

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

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

请注意,抛出异常有时是危险的,因为它会创建其他一些bug,但是如果您只是尝试禁用一个函数,那么这个选项不会造成太大的伤害。顺便说一句,这实际上不会删除该方法,因为它只会替换它,现在取决于您选择哪个方法将接收此消息。希望这是有帮助的

您在哪里调用
Ellipse\u OperationCompleted\u 1()
函数?在动画运行之前,请将layoutRoot grid IsHitTest属性设置为False。Romasz给出的答案对我的情况有效。@zap92欢迎您。因此,如果一个解决方案解决了你的问题,别忘了接受它。