Windows Phone 7.1: AutoResetEvent не работает с методами обслуживания?

После добавления ссылки на службу в мое приложение для телефона (например, http://www.deeptraining.com/webservices/weather.asmx?op=GetWeather), я попытался использовать AutoResetEvent для вызова синхронного метода эмуляции. Но после вызова WaitOne метод Set никогда не вызывается. Почему? Это ошибка?

public partial class MainPage : PhoneApplicationPage
{
    private readonly AutoResetEvent _autoResetEvent = new AutoResetEvent(false);
    private string _result;

    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        var weatherSoapClient = new WeatherSoapClient();

        weatherSoapClient.GetWeatherCompleted += weatherSoapClient_GetWeatherCompleted;
        weatherSoapClient.GetWeatherAsync("Pekin");

        _autoResetEvent.WaitOne(); // Program stop hire

        textBlock1.Text = _result;
    }

    void weatherSoapClient_GetWeatherCompleted(object sender, GetWeatherCompletedEventArgs e)
    {
        _result = e.Result;
        _autoResetEvent.Set(); // Never invoke! Why???
    }
}

person codecity    schedule 30.09.2011    source источник
comment
возможный дубликат DownloadStringTaskAsync на WP7 зависает при получении результата   -  person Richard Szalay    schedule 30.09.2011


Ответы (1)


В WP7 ответы HTTP обрабатываются в потоке пользовательского интерфейса. Блокировка потока пользовательского интерфейса предотвращает обработку ответа.

person Richard Szalay    schedule 30.09.2011