Каждый асинхронный метод, созданный для прокси WCF, будет иметь перегрузку, которая принимает параметр userState
. Например, если у вас есть метод GetCustomerByID
, вы увидите две перегрузки:
public void GetCustomerByIDAsync(Guid customerID) { ... }
public void GetCustomerByIDAsync(Guid customerID, object userState { ... }
Вы можете поместить все, что вы хотите, в userState
, и оно будет отправлено обратно в событии завершения. Так что, если вы просто хотите вернуть оригинал customerID
, в приведенном выше случае:
public void BeginGetCustomerByID(Guid customerID)
{
// Second instance of customerID is userState
service.GetCustomerByIDAsync(customerID, customerID);
}
private void service_GetCustomerByIDCompleted(object sender,
GetCustomerByIDCompletedEventArgs e)
{
Guid customerID = (Guid)e.UserState;
// Do something with e.Error or e.Result here
}
Вы можете поместить все, что вы хотите, в userState
, поэтому, если метод принимает несколько параметров, вы можете поместить их все в собственный класс и передать класс в качестве состояния.