2011-11-10 5 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(); 
} 

다음 코드 조각을 시도했지만 배경 작업이 중단되어 다시 활성화하기 위해 앱을 다시 시작해야했습니다. 왜? 데이터가 분석 않겠다 때이고 데이터가 다운로드됩니다 때 한 두 시간 나중에 모든 thetile 업데이트에 beeing로 다시 정상으로해야한다로

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

그래서, 타일이 남아 있어야한다.

지금 바로 쇼 스토퍼이므로 도움을주십시오. 미리 감사드립니다.

답변

2

호출하기 NotifyComplete()를 호출해도 메소드 호출이 실행 된 후에 코드가 중지되지 않고 OS가 완료되었다는 것을 알 수 있습니다. OS가 스레드를 중단해야하지만 몇 줄의 코드를 실행할 시간이있을 수 있습니다. 문서는 NotifyComplete를 호출하는 스레드가 즉시 중단되는지 여부에 대해 명확하지 않습니다.

NotifyComplete를 호출 한 후 return 문을 추가하면 타일을 업데이트해서는 안됩니다.

+0

calum 님, 고맙습니다. 지금은 잘 작동합니다! 내 OnInvoke에서 나는 HTTPWebRequest를 가지고 있으며, 그 시간이 하나라면 NotifyComplete를 호출한다. 코드를 계속 실행하고 싶지 않기 때문에 거기에 리턴을 추가해야합니까? – John

+0

코드를 보지 않고 말하기가 어렵습니다. 그냥 시간이 초과되면 NotifyComplete를 호출 한 후 더 이상 코드가 누락되지 않도록하십시오. NotifyComplete를 Environment.Exit처럼 처리하십시오.이 메소드를 호출 한 후 현재 메소드는 애플리케이션이 종료되기 전에 완료됩니다. – calum

관련 문제