如何从c#应用程序调用docker run

dib*_*487 7 c# wpf docker

我有一个WPF应用程序,在处理文件时需要使用docker进程.docker容器构建在盒子上,当前在使用WPF应用程序处理文件后,用户必须启动命令提示符并输入

docker run --it --rm -v folderdedirect process parameters_including_filePath
Run Code Online (Sandbox Code Playgroud)

做进一步处理.

我想在WPF应用程序中包含它.我大概可以用system.diagnostics.processcmd.exe?我看了看Docker.dotnet但不能为我的生活弄清楚它应该如何运行一个本地容器.

dib*_*487 7

这是我最后的方法,但可能有更好的方法。

var processInfo = new ProcessStartInfo("docker", $"run -it --rm blahblahblah");

processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardOutput = true;
processInfo.RedirectStandardError = true;

int exitCode;
using (var process = new Process())
{
    process.StartInfo = processInfo;
    process.OutputDataReceived += new DataReceivedEventHandler(logOrWhatever());
    process.ErrorDataReceived += new DataReceivedEventHandler(logOrWhatever());

    process.Start();
    process.BeginOutputReadLine();
    process.BeginErrorReadLine();
    process.WaitForExit(1200000);
    if (!process.HasExited)
    {
        process.Kill();
    }

    exitCode = process.ExitCode;
    process.Close();
}
Run Code Online (Sandbox Code Playgroud)

  • 进程.关闭(); 是多余的,因为它位于 using() 子句中。 (2认同)