protected async override Task<IList> FirstRequestData()
 {
     RequestDataEventArgs eventArgs = new RequestDataEventArgs();
     if (RequestingData != null)
     {
         FirstRequestingData(this, eventArgs);
         await eventArgs.WaitRequest();
         return eventArgs.Result;
     }
     else
     {
         return null;
     }
 }
 protected async override Task<IList> RequestData()
 {
     RequestDataEventArgs eventArgs = new RequestDataEventArgs();
     if (RequestingData != null)
     {
         RequestingData(this, eventArgs);
         await eventArgs.WaitRequest();
         if (CanStopRequestingData && (eventArgs.Result == null || eventArgs.Result.Count == 0))
         {
             IsStopRequestingData = true;
         }
         return eventArgs.Result;
     }
     else
     {
         return null;
     }
 }