这段代码在我的测试系统上运行良好(原始 Windows-Server 2008 R2 的副本)
private string _getNetFiles()
{
// prepare execution process
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe", "/c openfiles /query /Fo list");
processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = false;
processStartInfo.RedirectStandardError = true;
processStartInfo.StandardOutputEncoding = System.Text.Encoding.GetEncoding(437);
processStartInfo.RedirectStandardOutput = true;
// execute
Process process = Process.Start(processStartInfo);
process.WaitForExit();
// read outputs
string stdOutput = process.StandardOutput.ReadToEnd();
string stdError = process.StandardError.ReadToEnd();
return stdOutput;
}
Run Code Online (Sandbox Code Playgroud)
在原始系统上:我在任务管理器中看到“cmd.exe /c openfiles /query /Fo list”任务,但该任务永远不会结束(process.WaitForExit() process never end)。在原始系统上使用 Cmd:openfiles /query /fo list也可以正常工作!
问题可能出在哪里?
问候提高者
编辑:我可以使用任务管理器停止该过程。stdOutput 是正确的。为什么不结束 cmd-taks。
AutoScroll我有一个带有 property =的面板true。通过动态地将其他控件添加到面板而不滚动 - 一切正常!
void addControl(){
int top = 13 + ( this.Controls.Count * cmdSet.Height );
ucCommandSet cmdSet = new ucCommandSet() { Top = top };
this.Controls.Add( cmdSet );
}
Run Code Online (Sandbox Code Playgroud)
但是,如果滚动条插入到 TOP [0] 以外的位置,则控件会添加到更靠下的位置。
我需要在计算中包含哪些属性?
问候提高者
@LarsTech 的解决方案:
void addControl(){
int top = 13 + ( this.Controls.Count * cmdSet.Height ) + this.AutoScrollPosition.Y;
ucCommandSet cmdSet = new ucCommandSet() { Top = top };
this.Controls.Add( cmdSet );
}
Run Code Online (Sandbox Code Playgroud)