Асинхронные методы Web Forms
Представление:
Согласно этой инструкции:
- добавил в тег
PageключAsync="true". в backend классе определил дополнительный асинхронный метод и зарегистрировал его в Page_Load.
public partial class WebForm1 : System.Web.UI.Page { PublicServiceClient publicClient; PrivateServiceClient privateClient; protected void Page_Load( object sender, EventArgs e ) { Task.Run( ( ) => { publicClient = new PublicServiceClient( "BasicHttpBinding_IPublicService" ); } ); Task.Run( ( ) => { privateClient = new PrivateServiceClient( "NetTcpBinding_IPrivateService" ); } ); RegisterAsyncTask( new PageAsyncTask( b1TaskAsync ) ); // <<<<<<<< (1) } protected void Button1_Click( object sender, EventArgs e ) { Task.Run( ( ) => { b1TaskAsync( ); } ); // <<<<<<<< (2) } private async Task b1TaskAsync( ) { Label1.Text = await Task.Run( ( ) => { return publicClient.GetPublicInfo( ); } ); } protected async void Button2_Click( object sender, EventArgs e ) // <<<<<<< (3) { Label2.Text = await Task.Run( ( ) => { return privateClient.GetPrivateInfo( ); } ); } }
Проблемы
- По инструкции регистрирую асинхронный метод при загрузке формы, но он сразу же выполняется, не дожидаясь, пока я нажму на
Button1 - Правильно ли я вызываю этот метод в обработчике кнопки?
- Без всякой регистрации, переопределил обработчик второй кнопки. Так правильно? Этот метод теперь асинхронно выполняется? (на глаз непонятно, т.к. во время его выполнения как и прежде индикация загрузки на вкладке окна).

