Курсор не вращается до конца процесса в приложении Windows Mobile

У меня есть кнопка в моей форме, и когда я нажимаю кнопку, она получает данные из разных таблиц через веб-сервис.

Я пишу код ниже

private void imageButtonWorkOrder_Click(object sender, EventArgs e)
{
    try
    {
        Cursor.Current = Cursors.WaitCursor;

        //Code for to get data from 10 tables
    }
    catch
    {
    }
    finally
    {
        Cursor.Current = Cursors.Default;            
    }
}

Но проблема, с которой я сталкиваюсь, заключается в том, что курсор не вращает конец процесса. Это просто прекращается через некоторое время.

Пожалуйста, предложите мне, как решить эту проблему.

Заранее спасибо, Балу

1 ответ

Это не легко сказать, основываясь на том, что мало мы знаем. Одна вещь, которая может вызвать ваше поведение, заключается в том, что если этот раздел вашего кода:

//Code for to get data from 10 tables

Когда-нибудь установите курсор обратно на Default, тогда он не будет ждать вашего блока finally. Любые работающие потоки могут также изменить его обратно - Курсор не для каждого потока, и это не считается счетчиком.

Как дополнительное наблюдение, получение данных в обработчике кликов - особенно когда требуется достаточное время, чтобы оправдать ожидание курсора, не является хорошей практикой. Даже если мы не будем рассматривать разделение интересов (которого, вероятно, нет в этом коде), весь пользовательский интерфейс будет казаться "заблокированным" для пользователя. Вам гораздо удобнее получать данные в фоновом потоке и сигнализировать о пользовательском интерфейсе, когда это будет сделано, чтобы он мог заполнять пользовательский интерфейс в этот момент.

Другие вопросы по тегам