2014-03-13 53 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