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欢迎您。因此,如果一个解决方案解决了你的问题,别忘了接受它。