2014-12-28 2 views
2

GeoLocator를 사용하여 사용자 위치를 찾는 앱이 있습니다. 그것은 다음과 같습니다비동기/초보자를 기다리고 있습니다

public async (not sure what to put here) Cordinates() 
{ 
    if (_geolocator == null) 
    { 
     _geolocator = new Geolocator(); 
    } 

    Geoposition _Position = await locator.GetGeopositionAsync(); 
} 

나는 또한 내가 사전 처리를 설명하기 위해 사용하고자하는 문자열 속성이 있습니다.

예를 들어
public string Status {get; set} 

Cordinates() 문자열 값이되어야 시작 "검색 ..."하고 Cordinates()이 완료되면 그것은

내가 어디해야이 상황을 생각 "완료"를 말할 수 await/async를 사용하십시오.하지만 제게 도움을 청합니다.

답변

3

반환 할 항목은 Task<T>이거나 아무것도 반환하지 않은 경우 Task입니다 (void). 예를 들어, return _position;과 같은 줄이 있다면 함수의 반환 유형을 Task<Geoposition>으로 설정하거나 return 0이 있으면 Task<int>으로 변경하고 아무 것도 반환하지 않거나 단순히 return 만 사용하면 Task 만 사용하면됩니다.

public async Task<your return type> or Task if return type is void Cordinates() 
{ 
    if (_geolocator == null) 
    { 
     _geolocator = new Geolocator(); 
    } 
    this.Status = "Searching..."; // seting status and awaiting your async GetGeoposition 
    Geoposition _Position = await locator.GetGeopositionAsync(); 
    this.Status = "Done"; // after GetGeoposition is finidshed you are here and setting status to done 
} 
1

비동기/대기 및 스레딩의 기본 사항을 읽어야합니다. 좋은 시작은 아마도 Stephen's post here 일 것입니다.

public async Task<Geoposition> Cordinates() 
{ 
    if (_geolocator == null) 
    { 
    _geolocator = new Geolocator(); 
    } 

    Geoposition _Position = await locator.GetGeopositionAsync(); 
} 

Status에서 현재 위치가 이미 쿼리되었는지의 경우 확인합니다 :

이 코드를 해결하려면,이 같은 (참조 또한 MSDN 참조)입니다. 그것에 따라 원하는 문자열 값을 반환합니다. 거기에 비동기 작업이 없습니다. 또는 지형을 기다리는 곳의 전후에 동상을 설정하십시오.

+0

감사합니다. 나는 ths를 볼 것이다! – Wranglerino

관련 문제