如何使一段代码只能在之前的行之后执行? (Android C#)

时间:2014-03-13 13:40:31

标签: c# android xamarin

我需要让一个加载器在执行其余代码之前启动animatin。

我有我的代码并且它表示loader.Animate()然后执行需要4秒钟完成的事情。但问题是,即使在其余的代码之前放入loader.Animate(),动画也会在所有内容完成之后启动,就像屏幕冻结一样。

最好的方法是什么才能使这个像开始制作动画一样正确,只有在完成剩下的工作之后。我尝试使用Thread.Sleep但没有用。

2 个答案:

答案 0 :(得分:2)

这是async await非常棒的用例之一。这是一个快速示例,可以让您了解如何使用它:

    protected override async void OnResume()
    {
        base.OnResume ();

        StartAnimate ();

        await RunAsync (TimeSpan.FromSeconds (4));

        StopAnimate ();
    }

    private async Task RunAsync(TimeSpan span)
    {
        await Task.Delay (span);
    }

    private void StartAnimate()
    {
        // put animation here
    }

    private void StopAnimate()
    {
        // stop animating after the thread has ended
    }

答案 1 :(得分:1)

您需要使用多线程。将你的“工作”放在与你的“图形工作”不同的线程中。