Я пытаюсь запустить 2 exe в параллельном режиме, используя Parallel.Invoke()
Оба exe пытаются получить доступ к одной и той же базе данных (но к разным таблицам). Кроме того, исполняемые файлы будут работать на двух разных серверах. Я использую WMI с C # для запуска командного файла (который будет вызывать другой exe-файл) на удаленном сервере.
Parallel.Invoke(() =>
{
RunInParallel();
},
() =>
{
InvokeModule("EmiCalculator.exe");
}
);
void RunInParallel()
{
var connoptions = new ConnectionOptions();
var managementScope = new ManagementScope
(String.Format(@"\\{0}\ROOT\CIMV2", REMOTE_COMPUTER), connoptions);
var wmiProc = new ManagementClass(managementScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
string commandLineInput = @"\\win-server1\D$\Data\Run.bat";
var processToRun = new[] { commandLineInput };
wmiProc.InvokeMethod("Create", processToRun);
}
Run.bat вызывает SalaryCalculator.exe
Оба exe имеют файл конфигурации с ConnectionString, как показано ниже.
<add name="CONN" connectionString="Data Source=SERVER1-LAB1;Initial Catalog=Loan;Integrated Security=True"/>
При запуске exe на удаленном компьютере происходит сбой и выдается исключение ниже:
Application: SalaryCalculator.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.AggregateException
Stack:
at System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[], Int32, System.Threading.CancellationToken)
at System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[], Int32)
at System.Threading.Tasks.Task.WaitAll(System.Threading.Tasks.Task[])
ПРИМЕЧАНИЕ. Если я запустил командный файл после подключения к удаленному компьютеру, он будет работать нормально. Ошибка возникает только при использовании с Parallel.Invoke()
Как я могу продолжить здесь? Любая помощь приветствуется.
1 ответ
Мне удалось это сделать. Проблема заключалась в строке подключения, поскольку упоминалась Integrated Secuity. Я просто изменил строку подключения, чтобы использовать SQL server authentication
вместо аутентификации Windows. И все работало нормально.
< add name="CONN" connectionString="Data Source=SERVER1-LAB1;Initial Catalog=Loan;User Id=sa;Password=xxxx12345678" />
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.