2011-11-10 6 views
3

私は本当にあなたの助けが必要です。定期エージェント(OnInvoke)にデータをダウンロードしています。うまく動作しますが、毎晩、データをダウンロードするウェブサイトからダウンロードするデータがありません。それが起こった場合、現在のデータでライブタイルをそのまま(空ではなく)残し、更新しないようにします。更新をダウンロードして解析するためのデータがある場合は、1〜2時間後に続行する必要があります。バックグラウンドタスクがLiveTileを更新しないようにする

私はこれを試しましたが、NotifyCompleteがまだ実行された後にコードが呼び出されたときにこれを試しました。 NotifyCompleteは実行されるコードの残りの部分を停止するはずですか?

MatchCollection matchesMyData = rxMyData.Matches(strHTML); 
foreach (Match matchMyData in matchesMyData) 
{ 
    GroupCollection groupsMyData = matchMyData.Groups; 
    //Code for handling downloaded data 
} 

if (matchesMyData.Count < 1) 
{ 
    ShellToast toast = new ShellToast(); 
    toast.Title = "No update: "; 
    toast.Content = "Webservice returned no data"; 
    toast.Show(); 

    NotifyComplete(); 
} 

私はコードの次の部分を試しましたが、私のバックグラウンドタスクが停止しました。私は再びアプリケーションを起動して再度有効にしなければなりませんでした。どうして?だから、

ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("TileID=2")); 
if (TileToFind != null && intCount > 0) 
{ 
    //Update the live tile 
} 

何もデータが解析されていない取得したときにそれがあると1時間か2時間後にデータがダウンロードされるときthetileが更新beeingてと、すべてが正常に戻ってする必要がありますように、タイルが残っているはずです。

今すぐショーストッパーですのでお手伝いください。前もって感謝します。

答えて

2

呼び出すNotifyComplete()を呼び出すと、メソッド呼び出しの実行後にコードが停止することはなく、終了したことをOSに通知するだけです。 OSはスレッドを中止する必要がありますが、コードをいくつか実行する時間があります(NotifyCompleteを呼び出すスレッドが直ちに中止されるかどうかは不明です)。

NotifyCompleteの呼び出し後にreturnステートメントを追加すると、タイルは更新されません。

+0

calumさん、ありがとうございました。私のOnInvokeではHTTPWebRequestがあり、それが1回タイムアウトするとNotifyCompleteが呼び出されます。私はコードを実行し続けることを望んでいないので、そこにも戻り値を追加する必要がありますか? – John

+0

コードを見ずに言うのは難しいです。タイムアウトした場合、NotifyCompleteの呼び出し後にコードがヒットすることはありません。 NotifyCompleteをEnvironment.Exitのように扱う - これを呼び出した後、現在のメソッドはアプリケーションが終了する前に完了する。 – calum

関連する問題