Use C# Backgroundworker

private SynchronizationContext _context;

public string ScreenName { get { return "Dashboard"; } }

public DashboardUC()

{
 
_context = SynchronizationContext.Current;

  if (_context == null)
  {
 
    _context = new SynchronizationContext();
  }

  InitializeComponent();
  LoadInternals();
}
 
 
 
 


private void FillTaskAssignmentsTfList()
{  var worker = new BackgroundWorker();
   worker.DoWork += delegate(object sender, DoWorkEventArgs args)
{

var result = ProxyFactory.CreateProxy<IDashboardService>().GetTaskAssignmentsForUser(ClientSession.Current.User.User.Id);
args.Result = result;

};
worker.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs args)
{
if (args.Result is MethodResult)
{
var result = args.Result as MethodResult<DataTable>;
RunSafely(() =>
{if (result.Exception != null)
{
throw result.Exception;
}

this.taskTfListControl.DataSource = result.Result;
if (ClientSession.Current.User.IsAuthorized(UserRight.GrantChiefApprovalTestReleasePackage)
&& !taskTfListControl.GridMultiSelectRows
)taskTfListControl.GridMultiSelectRows = true;
});
}
};
worker.RunWorkerAsync();
}

Yorumlar