В настоящее время я выполняю сценарии PowerShell следующим образом:
internal void RunScript(PowerShell powerShell, Runspace runspace, Script script, IDictionary parameters = null, Action<ICollection<PSObject>> callback = null)
{
SetupScriptRun(powerShell, runspace, script, parameters);
powerShell.BeginInvoke(new PSDataCollection<PSObject>(), null, psCallback =>
{
ICollection<PSObject> results = powerShell.EndInvoke(psCallback);
LogWarningsAndErrors(powerShell, runspace, script, parameters);
if (callback != null)
{
callback(results);
}
}, null);
}
Я бы хотел обернуть этот код модели асинхронного программирования (APM) в задачу, как описано здесь:
TPL и традиционное .NET асинхронное программирование
Я пытался создать задачу, используя следующий метод, но я не могу понять, какими должны быть параметры:
var task = System.Threading.Tasks.Task.Factory.FromAsync<PSDataCollection<PSObject>>(???);
Как я могу обернуть методы BeginInvoke / EndInvoke в задачу?