Асинхронные методы Web Forms

Представление:

введите сюда описание изображения

Согласно этой инструкции:

  1. добавил в тег Page ключ Async="true".
  2. в 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( ); } );
        }
    }
    

Проблемы

  1. По инструкции регистрирую асинхронный метод при загрузке формы, но он сразу же выполняется, не дожидаясь, пока я нажму на Button1
  2. Правильно ли я вызываю этот метод в обработчике кнопки?
  3. Без всякой регистрации, переопределил обработчик второй кнопки. Так правильно? Этот метод теперь асинхронно выполняется? (на глаз непонятно, т.к. во время его выполнения как и прежде индикация загрузки на вкладке окна). введите сюда описание изображения

Ответы (0 шт):