StandardOutput.EndOfStream挂起

我正在我的C#应用​​程序中启动一个运行控制台应用程序的进程。 我重定向了标准输入和输出,并且能够通过StandardOutput.ReadLine()读取几行。 我确信我已正确配置ProcessStartInfo。 控制台应用程序在启动时输出几行(以“标记”行结束),然后等待输入。 收到输入后,它再次输出几行(再次以“标记”行结束),依此类推。 我的目的是从它读取行直到我收到“marker”行,此时我知道发送相应的输入字符串。 我的问题是,经过几次迭代,程序挂起。 暂停调试器往往会将挂起置于对StandardOutput.EndOfStream的调用中。 以下测试代码就是这种情况: while (!mProcess.StandardOutput.EndOfStream) // Program hangs here. { Console.WriteLine(mProcess.StandardOutput.ReadLine()); } 当我测试“marker”行时,如果我在读取行后尝试访问StandardOutput.EndOfStream,我会得到同样的挂起: string line = “”; while (!isMarker(line)) { line = mProcess.StandardOutput.ReadLine(); } bool eos = mProcess.StandardOutput.EndOfStream; // Program hangs here. 我可能会做什么导致这个属性表现如此可怕?

如何使用AES(Rijndael)检查文件是否加密

我在C#中使用’RijndaelManaged’和’CryptoStream’类来加密文件。 在加密文件之前,我想检查文件是否已加密。 我尝试使用File.GetAttributes()方法来检查加密,但它无法正常工作。 我需要一些提示,我可以检查文件是否已加密。

C#:对象的内存使用情况

有没有办法找到特定对象使用了多少内存? 例如一个List。 考虑到所有因素,例如字符串实习以及编译器/运行时环境/无论做什么。

在数组中的每个项目后打印逗号(,)

可以说我有一个项目的数组(或列表) A[] = [a,b,c,d,e] 如果我想打印出来,所以每个项目都用逗号(或任何其他分隔符)分隔,我通常必须这样做: for(int i=0; i < A.Count; i++) { Console.Write(A[i]); if (i != A.Count-1) Console.Write(","); } 所以,我的输出看起来像: a,b,c,d,e 是否有更好或更简洁的方法来实现这一目标? 我喜欢使用foreach循环,但是在最后一个元素之后也会打印逗号,这是不可取的。

在C#中输出Unicode字符

我是编程和自学的新手。 我正在尝试输出Taurus的占星符号,它应该是Unicode中的U + 2649。 这是我正在使用的代码…… string myString = “\u2649”; byte[] unicode = System.Text.Encoding.Unicode.GetBytes(myString); Console.WriteLine(unicode.Length); 我得到的结果是数字2而不是符号或字体。 我确定我做错了什么。

设置最大内存使用量C#

我有一个应用程序,必须使用我没有写的库,我没有权力改变它。 基本上存在内存泄漏,因此运行时间越长,泄漏的越多; 它基本上只是编写陈旧的页面文件,我没有权力删除。 内存泄漏实际上并不会导致程序崩溃,它只是简单地占用了所有内存。 当它使用所有系统的记忆时,操作系统将开始删除旧的页面文件,一切运行正常。 如果我在2GB系统上运行我的应用程序,它将使用2 GB并继续运行; 同样适用于16GB系统。 有没有办法设置应用程序可以使用的内存量?

将数据表从C#传递到SQL Server 2008

如何将DataTable从C#传递到SQL Server 2008? 例外 : 表类型参数’@CurrentTableInitial’必须具有有效的类型名称。 表结构: CREATE TABLE [dbo].[RegisterChoiceUserInitial]( [RegisterChoiceUserInitialID] [int] IDENTITY(1,1) NOT NULL, [UserId] [uniqueidentifier] NOT NULL, [RegisterChoiceUserInitialJob] [nvarchar](50) NULL, [RegisterChoiceUserInitialOrganization] [nvarchar](50) NULL, [RegisterChoiceUserInitialUnit] [nvarchar](50) NULL, [RegisterChoiceUserInitialMembershipType] [nvarchar](50) NULL, [RegisterChoiceUserInitialStart] [nvarchar](10) NULL, [RegisterChoiceUserInitialEnd] [nvarchar](10) NULL, CONSTRAINT [PK_RegisterChoiceUserInitial] PRIMARY KEY CLUSTERED ( [RegisterChoiceUserInitialID] ASC ) 用户定义的类型: CREATE TYPE [dbo].[TableTypeInitial] AS TABLE( [ID] [int] NULL, […]

IEnumerable.Select with index

我有以下代码: var accidents = text.Skip(NumberOfAccidentsLine + 1).Take(numberOfAccidentsInFile).ToArray(); 事故是一系列的字符串。 我想从字符串数组到Accident对象数组进行Linq转换,如下所示: return accidents.Select(t => new Accident() {Id = i, Name = t.Replace(“\””, string.Empty)}).ToArray(); 如何使用Linq从事故arrays中检索索引i还是我必须上学?

Json.NET区分大小写的反序列化

是否可以指定一些反序列化选项来使用Json.NET执行区分大小写的反序列化? 建议: public class Account { public string Email { get; set; } public bool Active { get; set; } public DateTime CreatedDate { get; set; } public IList Roles { get; set; } } 从反序列化时必须失败: { “email”: “james@example.com”, “active”: true, “createdDate”: “2013-01-20T00:00:00Z”, “roles”: [ “User”, “Admin” ] }

“无效的托管/非托管类型组合”是什么意思?

我有以下结构: [StructLayout(LayoutKind.Auto,Pack=0)] private unsafe struct BIRDSYSTEMCONFIG { public byte bySystemStatus; public byte byError; public byte byNumDevices; public byte byNumServers; public byte byXmtrNum; public ushort wXtalSpeed; public double dMeasurementRate; public byte byChassisNum; public byte byNumChassisDevices; public byte byFirstDeviceNum; public ushort wSoftwareRev; public fixed byte byFlockStatus[127]; } 基于C ++结构: typedef struct tagBIRDSYSTEMCONFIG { BYTE bySystemStatus; // current […]