- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 C# 调用 powershell 脚本。该脚本非常小,是“gps;$host.SetShouldExit(9)”,它列出了进程,然后发回一个退出代码以供 PSHost 对象捕获。
我遇到的问题是,当管道停止并处理后,输出读取器 PSHost 集合似乎仍在写入,并且正在填满。因此,当我尝试将其复制到我自己的输出对象时,当我尝试对其进行迭代时,它会出现 OutOfMemoryException。有时它会带有 Collection was modified 消息。这是代码。
private void ProcessAndExecuteBlock(ScriptBlock Block)
{
Collection<PSObject> PSCollection = new Collection<PSObject>();
Collection<Object> PSErrorCollection = new Collection<Object>();
Boolean Error = false;
int ExitCode=0;
//Send for exection.
ExecuteScript(Block.Script);
// Process the waithandles.
while (PExecutor.PLine.PipelineStateInfo.State == PipelineState.Running)
{
// Wait for either error or data waithandle.
switch (WaitHandle.WaitAny(PExecutor.Hand))
{
// Data
case 0:
Collection<PSObject> data = PExecutor.PLine.Output.NonBlockingRead();
if (data.Count > 0)
{
for (int cnt = 0; cnt <= (data.Count-1); cnt++)
{
PSCollection.Add(data[cnt]);
}
}
// Check to see if the pipeline has been closed.
if (PExecutor.PLine.Output.EndOfPipeline)
{
// Bring back the exit code.
ExitCode = RHost.ExitCode;
}
break;
case 1:
Collection<object> Errordata = PExecutor.PLine.Error.NonBlockingRead();
if (Errordata.Count > 0)
{
Error = true;
for (int count = 0; count <= (Errordata.Count - 1); count++)
{
PSErrorCollection.Add(Errordata[count]);
}
}
break;
}
}
PExecutor.Stop();
// Create the Execution Return block
ExecutionResults ER = new ExecutionResults(Block.RuleGuid,Block.SubRuleGuid, Block.MessageIdentfier);
ER.ExitCode = ExitCode;
// Add in the data results.
lock (ReadSync)
{
if (PSCollection.Count > 0)
{
ER.DataAdd(PSCollection);
}
}
// Add in the error data if any.
if (Error)
{
if (PSErrorCollection.Count > 0)
{
ER.ErrorAdd(PSErrorCollection);
}
else
{
ER.InError = true;
}
}
// We have finished, so enque the block back.
EnQueueOutput(ER);
}
这是 PipelineExecutor 类,它设置执行管道。
public class PipelineExecutor
{
private Pipeline pipeline;
private WaitHandle[] Handles;
public Pipeline PLine
{
get { return pipeline; }
}
public WaitHandle[] Hand
{
get { return Handles; }
}
public PipelineExecutor(Runspace runSpace, string command)
{
pipeline = runSpace.CreatePipeline(command);
Handles = new WaitHandle[2];
Handles[0] = pipeline.Output.WaitHandle;
Handles[1] = pipeline.Error.WaitHandle;
}
public void Start()
{
if (pipeline.PipelineStateInfo.State == PipelineState.NotStarted)
{
pipeline.Input.Close();
pipeline.InvokeAsync();
}
}
public void Stop()
{
pipeline.StopAsync();
}
}
这是发生异常的 DataAdd 方法。
public void DataAdd(Collection<PSObject> Data)
{
foreach (PSObject Ps in Data)
{
Data.Add(Ps);
}
}
我在 Data.Add 周围放置了一个 for 循环,并且集合充满了 600k+ 所以感觉 gps 命令仍在运行,但为什么。任何想法。
提前致谢。
最佳答案
发现问题。将生成的集合和迭代器命名为相同的名称,以便在迭代时将其添加到集合中,然后返回到迭代器中,依此类推。啊!
关于c#-4.0 - C# powershell 输出读取器迭代器在管道关闭和处置时被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841922/
释放 MKMapView 后,我遇到了奇怪的(?)崩溃。 MKMapView 是我的 View Controller 中的 subview ,在我从导航堆栈中删除该 View 并释放它后,应用程序崩溃
我正在尝试使用以下方法处理我的 JFrame: private void killJFrame(JFrame jFrame) { SwingUtilities.invokeLater(() -
我用的是asp net 4.5。 我有 Marker.aspx 页面和页面 Marker.aspx.cs 背后的代码。每当回发发生时,Page_Load 函数将在代码隐藏中触发并创建 GeoMarku
在 C# 中,如 Documentation 中所述, 和 this nice post接受的答案,声明类不继承其父类的析构函数。 问题:如果我想确保释放基类的私有(private)元素,在所有子类中
我想知道是否有人知道如何知道 InheritedWidget 何时被释放? 这个问题的原因是我正在做一些实验,并且我正在使用 InheritedWidget 作为 BLoC 的提供者。此 BLoC 在
如果应用程序意外关闭,如何安全地处理 ReportViewer 对象 Public Shared rv As New Microsoft.Reporting.WinForms.ReportViewe
有没有办法销毁 WebView 实例?如果页面加载,并说视频开始播放,我希望能够,当我隐藏 WebView 时,基本上可以销毁它,或者至少重置它。 我知道我可以听 visibleProperty 并执
在总体情况下,Close 方法在语义上只是更改对象的状态,而该对象可以使用 Open 方法无限期地再次更改。 另一方面,IDisposable.Dispose() 方法的语义将对象置于无法撤消的状态。
我使用StreamResourceInfo.Stream从资源中获取BitmapImage。使用流后 Close 和 Dispose 是否正确?我问这个问题是因为在内存分析器中,如果这样做我会收到错误
我正在编写一个程序,显示在屏幕上移动的图像,但是对于作业,我必须使用drawImage方法。我创建一个名为turtle的新图像,然后在一个点绘制该图像,然后在稍后的时间点再次绘制它,但是,第一个绘制的
这个问题在这里已经有了答案: Do you need to dispose of objects and set them to null? (12 个答案) 关闭 4 年前。 我在我的代码中使用
我有一个使用 Entity Framework 的 MVC 3 应用程序,我在其中设置了自定义角色提供程序。 我的角色提供者依赖于一个存储库,而该存储库依赖于 DbContext。 我在应用程序启动方
我正在尝试创建处理整个 BST 的迭代方法。 通过函数 insert_nodes 插入节点后,我没有得到预期的输出。 它应该打印如下内容:left,right, #nr #nr #nr 对于数字 5,
我正在使用 MemoryAppender 来读取单元测试中的日志消息。 我按以下方式使用 BasicConfigurator: class LogVerifier { pr
谁能给出一个完整的例子来说明 qooxdoo 1.6 中的 dispose 和 destruct 是如何工作的? ,我在 qooxdoo 演示或文档中找不到任何好的示例。 谢谢你的建议。 最佳答案 处
我在处理屏幕时遇到问题。当我尝试处置 OrthogonalTiledMapRenderer 时,收到此错误消息。我在网上查了一下,没有发现任何其他这样的例子或发生这种情况的情况。 Exception
我正在使用匿名方法来处理 COM 对象中的事件。程序终止后,我在匿名方法中使用的资源似乎没有被“正确关闭”,因为我正在观看的每个资源都会出现第一次机会异常 (InvalidComObjectExcep
我有一个用 C# 编写的方法,它接受一个包含 XML 文档的字符串和一个 XSD 流数组。字符串文档根据 XSD 进行验证: private static XmlValidationResult Va
有没有办法“清理”您创建的对象和其他变量?还是它们会自动处理掉,或者我的整个概念都错了?这样做的正确方法是什么?我尽量避免 GC。 最佳答案 在没有内存管理的 GC 语言中,唯一的清理方法是 GC 。
当您在 ASP.Net 框架中创建和使用 Web 服务代理类时,该类最终继承自 Component,后者实现了 IDisposable。 我从未在网上看到过人们处理 Web 代理类的例子,但想知道是否
我是一名优秀的程序员,十分优秀!