3

イライラする問題があるので、本当にあなたの助けが必要です。定期的なエージェント(OnInvoke)でデータをダウンロードしています。正常に動作しますが、毎晩、データをダウンロードするWebサイトにダウンロードするデータがありません。その場合は、ライブタイルを(空になるのではなく)現在のデータのままにして、更新されないようにします。その後、1〜2時間後、ダウンロードして解析するデータがある場合は、更新を続行する必要があります。

私はこれを試しましたが、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時間後にデータがダウンロードされると、すべてが正常に戻り、タイルビーが更新されます。

これは現在ショーストッパーですので、助けてください。前もって感謝します。

4

1 に答える 1

2

NotifyComplete()を呼び出しても、メソッド呼び出しの実行後にコードが停止することはありません。終了したことをOSに通知するだけです。OSはスレッドを中止する必要がありますが、コードの数行が実行される時間がかかる場合があります(NotifyCompleteを呼び出すスレッドがすぐに中止されるかどうかについてのドキュメントは明確ではありません)。

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

于 2011-11-10T16:14:23.067 に答える