0
비동기 웹 요청을 처리하고 있습니다. 메시지 회신을하기 위해 응답에 의존해야합니다. 동일한 스레드에없는 개체를 수정하는 방법
는// creating request
string messageToReturn = string.empty;
request.BeginGetResponse(ar =>
{
HttpWebRequest req2 = (HttpWebRequest)ar.AsyncState;
var response = (HttpWebResponse)req2.EndGetResponse(ar);
// is it safe to do this?
messageToReturn = "base on respone, assign different message";
}, request);
// will i get any response message? i will always get empty right?
// since response is handle in another thread
return messageToReturn;
그렇게 할 수있는 가장 좋은 방법이 무엇인가를 다음과 같이 STH을 할 생각?
들으 ... 당신이 난 그냥이 작업을 수행 할 수 있습니다 생각하십니까 : Dispatcher.BeginInvoke는 (() => {messateToReturn = ""뭔가 ";}); – jojo
아니, 때문에에게조차 그 메소드가 실행됩니다 비동기 적으로 호출하고 messageToReturn을 반환 할 때 호출이 완료된다는 보장은 없습니다. 응답이 돌아올 때까지 스레드를 정말로 차단하려면 ManualResetEvent를 확인하십시오. UI를 잠그므로주의하십시오! –