2015-12-25 7 views
0

Я написал прикладную программу на C#, где я подключаюсь к базе данных Teradata и запускаю запрос, введенный пользователем. Много раз этот запрос является большим и требует времени для выполнения. Я хочу реализовать кнопку отмены на основном пользовательском интерфейсе. Если пользователь считает, что один запрос занимает слишком много времени для запуска, он должен иметь возможность прервать этот запрос. Запросы будут только для запросов. Прямо сейчас, когда запрос отправляется, пользовательский интерфейс замерзает, и пользователь должен прервать процесс, чтобы убить его запрос. Спасибо! Samir SinghВнедрить кнопку запроса на прерывание

+0

Я новичок на C#, так как я человек Teradata. Если кто-то может поделиться кодом, это будет действительно полезно. –

ответ

2

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

Async-wait - ваш друг в этом сценарии. Что касается отмены в sql, я знаю, что вы можете сделать sqlcommand.cancel, проверьте, что предоставляет поставщик Teradata и вызывает это.

1

Либо перерисовка на Application.ProcessMessage(), либо поток вашего приложения, чтобы ваши вызовы БД могли выходить и выполнять их, в то же время инструктируя пользовательский интерфейс делать что-то приятное.