解决 StackOverflow 异常
Solve StackOverflow exception
虽然我一直在阅读 whosebug.com 中的宝贵帖子,但我对此非常感激。我不需要创建自己的线程。
:) 我一直想知道 Whosebug
是什么意思。最后我"able"实现了这个。
有人对如何修复下面的代码有任何建议吗?
我想做的是以某种方式将命令通过管道传输到新的 cmd 进程中。
这是必需的,因为我需要使用特定的局部变量 运行 cmd。
通常像这样 echo dir | cmd.exe
在一个批次中完成。但是我想单独使用 IronPython 来实现这一点。
提前致谢。
代码示例如下:
import clr
clr.AddReference("mscorlib")
import System
from System.Diagnostics import Process
""" Example"""
class P(System.Diagnostics.Process):
def __init__(self):
self.StartInfo.UseShellExecute = True
self.StartInfo.FileName = r"C:\Windows\System32\cmd.exe"
self.StartInfo.CreateNoWindow = False
self.standard_input = None
self.standard_output = None
self.standard_error = None
@property
def StandardInput(self):
return self.standard_input
@StandardInput.getter
def StandardInput(self):
return self.standard_input
@StandardInput.setter
def StandardInput(self, val):
self.standard_input = System.IO.StreamWriter(val)
def Start(self):
return self.Start()
p_instance = P()
p_instance.Start()
p_instance.StandardInput("dir")
通常当您重写一个方法并想调用原始实现时,您会调用超级实现。您的 Start()
函数正在调用自身导致堆栈溢出。
def Start(self):
return self.Start()
你需要做这样的事情:
def Start(self):
return super(P, self).Start()
虽然我一直在阅读 whosebug.com 中的宝贵帖子,但我对此非常感激。我不需要创建自己的线程。
:) 我一直想知道 Whosebug
是什么意思。最后我"able"实现了这个。
有人对如何修复下面的代码有任何建议吗?
我想做的是以某种方式将命令通过管道传输到新的 cmd 进程中。 这是必需的,因为我需要使用特定的局部变量 运行 cmd。
通常像这样 echo dir | cmd.exe
在一个批次中完成。但是我想单独使用 IronPython 来实现这一点。
提前致谢。
代码示例如下:
import clr
clr.AddReference("mscorlib")
import System
from System.Diagnostics import Process
""" Example"""
class P(System.Diagnostics.Process):
def __init__(self):
self.StartInfo.UseShellExecute = True
self.StartInfo.FileName = r"C:\Windows\System32\cmd.exe"
self.StartInfo.CreateNoWindow = False
self.standard_input = None
self.standard_output = None
self.standard_error = None
@property
def StandardInput(self):
return self.standard_input
@StandardInput.getter
def StandardInput(self):
return self.standard_input
@StandardInput.setter
def StandardInput(self, val):
self.standard_input = System.IO.StreamWriter(val)
def Start(self):
return self.Start()
p_instance = P()
p_instance.Start()
p_instance.StandardInput("dir")
通常当您重写一个方法并想调用原始实现时,您会调用超级实现。您的 Start()
函数正在调用自身导致堆栈溢出。
def Start(self):
return self.Start()
你需要做这样的事情:
def Start(self):
return super(P, self).Start()