У меня есть функция, которая создала делегированный объект и запускает 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 попадает?
Привет, Мэтт