2010-05-27 4 views
1

Silverlight에서 사용자가 일부 단추를 클릭 할 때까지 현재 스레드를 중지해도됩니까? 예 :Silverlight : 사용자 피드백을 기다리는 동안 스레드 중지

var clicked = false; 
ShowDialog(EventOnClosed => clicked = true); 
while (!clicked) {}; 
return; 

P. 나는 올바른 길을 안다. Silverlight 실행 흐름을 중단 한 다음 계속 진행하는 방법이 있는지 궁금합니다.

P.P.S. 좀 더 구체적으로 말하십시오. 자바 스크립트 alert()가 메시지에 사용되는 프로젝트를 상상해보십시오. Silverlight 메시지 상자로 "return Invoke ("alert ('') ")"를 어떻게 대체합니까? 올바른 비동기 기술을 사용하기 위해 500 개의 장소를 모두 변경합니까?

+1

+1, 왜냐하면 나는 downvote를 이해하지 못하기 때문입니다. 그러나 질문은 혼란 스럽습니다. "어떻게 할 수 있습니까?"또는 "OK입니까?", 아니면 "순수한 호기심에서 벗어나 UI 스레드를 차단할 수 있습니까?"라는 질문이 혼란 스럽습니다. __really__ 묻고있는 것이 무엇인지 명확히하고 싶습니까? – AnthonyWJones

+0

그래, 나는 정말로 모른다. 질문은 호기심에서 생겨났습니다. 그런 다음 코드를 시도하고 멈 춥니 다. 그래서 실제로 1) 가능하거나 2) SL 스레딩이 작업을 고려하여 어떻게 작동하는지입니다. – queen3

답변

3

아니요. 그렇다고해도 그렇게 CPU를 묶고 싶지는 않을 것입니다.

Silverlight에서는 비동기 방식으로 프로그래밍하는 데 익숙해 져야합니다. (일시 정지 더 구체적 나) UI 스레드를

void SomeCaller() 
{ 
    // ... do some intial stuff here 
    Action callBack =() => 
    { 
    //.. code to happen after async call completed 
    } 
    SomeContainingFunc(callBack); 
} 
1

당신이 할 시도하는 것은 정지입니다 - - 이것이다 : 그 호출과 비동기 작업 후 계속 코드를 원하는 무엇이든

void SomeContainingFunc(Action callBack) 
{ 
    ShowDialog(EventOnClosed => callBack())) 
} 

이 완료됩니다 어떤 상황에서도 좋은 생각이 아닙니다. 특히 사용자가 뭔가를 클릭 할 때까지 기다리는 것이 좋습니다!

"올바른 방법"으로하십시오.

관련 문제