2014-03-13 54 views
0

我需要制作一个加载程序才能在要执行的代码的其余部分之前启动animatin。如何让一段代码只在行前执行? (Android C#)

我有我的代码,它说loader.Animate(),然后做需要4秒完成的东西。但问题是,即使在代码的其余部分之前putin loader.Animate(),只有在所有东西完成后,动画才会启动,就像屏幕冻结一样。

什么是最好的办法,我可以做到这一点就像开​​始动画,只有在做完剩下的事情之后。我尝试使用Thread.Sleep,但没有工作。

+1

你应该考虑移动你需要做的任何事情到一个单独的工作线程。 –

回答

2

这是异步等待很好的用例之一。这里有一个快速示例,应该给你一个想法如何使用它:

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

您需要使用多线程。做你的“工作”在一个不同的线程比你做“图形工作”。

+0

问题是我不能继续使用那些需要4秒钟的代码。我不能运行加载程序动画从另一个线程...:/ – user3120770

+0

你必须在另一个线程运行4秒的代码,并在主线程中加载器动画 – Alex

+0

我已经得到它的人,但如果我运行这4秒的代码异步该应用程序不会等待4秒钟,并在完成该过程和错误之前跳到下一个屏幕...我至少需要一个响应或其他东西 – user3120770