У меня есть функция, которая создала делегированный и запускает BeginInvoke для этого объекта, с другой передачей функции для ожидания EndInvoke:
private static void DeploymentComponentThreadedCallBack(IAsyncResult ar)
{
var result = (AsyncResult)ar;
var pluginExecuteAction = (Action<int, Guid, int, EnvironmentServerComponentSet, string>)result.AsyncDelegate;
pluginExecuteAction.EndInvoke(ar);
//report back to WCF service that thread is finished
}
public void DeployComponent(byte[] resource, Guid componentGuid, string deploymentType, Dictionary<string, object> args)
{
var asyncCallback = new AsyncCallback(DeploymentComponentThreadedCallBack);
IDeployComponent plugin = GetPluginDelegate();
Action<byte[], Guid, string, Dictionary<string, object>> pluginExecuteAction = plugin.DeployComponent;
IAsyncResult ar = pluginExecuteAction.BeginInvoke(resource, componentGuid, deploymentType, args, asyncCallback, null);
}
Я хотел бы выполнить это модульное тестирование, но когда ясделать это, DeploymentComponentThreadedCallBack никогда не получает удар, и, очевидно, также не вызывает EndInvoke.Я предполагаю, что это происходит, потому что тест проходит до завершения асинхронного потока, поэтому поток прекращает выполнение до EndInvoke, но есть ли способ, которым я могу остановить это, чтобы я мог видеть, что EndInvoke получает удар?
Cheers,Matt