C# 向WPF Prism MVVM应用程序添加后台线程

C# 向WPF Prism MVVM应用程序添加后台线程,c#,wpf,multithreading,mvvm,prism,C#,Wpf,Multithreading,Mvvm,Prism,关于在WPF Prism 6应用程序中实现后台线程,是否有推荐的方法或指南?我需要对数百台远程计算机进行几次WMI调用,并向GUI显示状态和WMI数据。我遵循这一点,除了线程之外,几乎所有的东西都能正常工作。我不确定这是Prism特有的,但要启动数百个异步调用,我会使用任务: void DoWMICall(string computer) { Console.WriteLine("Calling {0}", computer); Task.Delay(1000).Wait();

关于在WPF Prism 6应用程序中实现后台线程,是否有推荐的方法或指南?我需要对数百台远程计算机进行几次WMI调用,并向GUI显示状态和WMI数据。我遵循这一点,除了线程之外,几乎所有的东西都能正常工作。

我不确定这是Prism特有的,但要启动数百个异步调用,我会使用任务:

void DoWMICall(string computer)
{
    Console.WriteLine("Calling {0}", computer);
    Task.Delay(1000).Wait();
    Console.WriteLine("Computer {0} is OK", computer);
}

void CallComputers()
{
    var tasks = new Task[100];
    var computerNames = new string[100];
    for (int i = 0; i < 100; ++i)
    {
        computerNames[i] = Guid.NewGuid().ToString();
    }
    for (int i = 0; i < 100; ++i)
    {
        var index = i;
        tasks[index] = Task.Run(() => DoWMICall(computerNames[index]));
    }
    // This call blocks until all tasks are finished.
    Task.WaitAll(tasks);
}
void DoWMICall(字符串计算机)
{
WriteLine(“调用{0}”,计算机);
Task.Delay(1000.Wait();
WriteLine(“计算机{0}正常”,计算机);
}
void CallComputers()
{
var tasks=新任务[100];
var computerNames=新字符串[100];
对于(int i=0;i<100;++i)
{
computerNames[i]=Guid.NewGuid().ToString();
}
对于(int i=0;i<100;++i)
{
var指数=i;
tasks[index]=Task.Run(()=>DoWMICall(computerNames[index]);
}
//此调用将阻塞,直到所有任务完成。
Task.WaitAll(任务);
}

我不确定这是否特定于Prism,但要启动数百个异步调用,我会使用任务:

void DoWMICall(string computer)
{
    Console.WriteLine("Calling {0}", computer);
    Task.Delay(1000).Wait();
    Console.WriteLine("Computer {0} is OK", computer);
}

void CallComputers()
{
    var tasks = new Task[100];
    var computerNames = new string[100];
    for (int i = 0; i < 100; ++i)
    {
        computerNames[i] = Guid.NewGuid().ToString();
    }
    for (int i = 0; i < 100; ++i)
    {
        var index = i;
        tasks[index] = Task.Run(() => DoWMICall(computerNames[index]));
    }
    // This call blocks until all tasks are finished.
    Task.WaitAll(tasks);
}
void DoWMICall(字符串计算机)
{
WriteLine(“调用{0}”,计算机);
Task.Delay(1000.Wait();
WriteLine(“计算机{0}正常”,计算机);
}
void CallComputers()
{
var tasks=新任务[100];
var computerNames=新字符串[100];
对于(int i=0;i<100;++i)
{
computerNames[i]=Guid.NewGuid().ToString();
}
对于(int i=0;i<100;++i)
{
var指数=i;
tasks[index]=Task.Run(()=>DoWMICall(computerNames[index]);
}
//此调用将阻塞,直到所有任务完成。
Task.WaitAll(任务);
}