如何动态控制台应用程序或Windows应用程序

我有一个小应用程序,应该以两种模式执行:非UI或WPF窗口。 它应该依赖于命令行参数。 在每种模式中,我都需要显示一些反馈日志: 在WPF窗口模式下,WPF将负责可视化日志, 在没有UI模式下,我需要一个控制台来显示日志。 如果我的应用程序是从控制台(主要是cmd.exe)启动的,我想在不打开新应用程序的情况下使用它。 如果我的应用程序已在控制台外启动(双击资源管理器,CreateProcess,…),我需要创建一个新的控制台来输出我的结果并等待Readkey关闭它。 我已经找到: 我如何创建一个新的控制台: 如何从wpf应用程序动态打开/关闭控制台窗口? , 如何获取当前控制台窗口句柄以显示/隐藏它: 显示/隐藏C#控制台应用程序的控制台窗口 而且我知道我可以在项目属性中静态选择“Windows应用程序”或“控制台应用程序”。 选择“Windows应用程序”,GetConsoleWindow()始终为0,我看不到如何重用以前的控制台。 选择“控制台应用程序”,我可以重用以前的控制台,但是当在WPF窗口模式下从资源管理器启动时,会在我的WPF主窗口下创建一个控制台。 问题是: 应用程序如何真正动态? 在WPF窗口模式下,只有一个WPF窗口(根本没有控制台)或非UI,只有一个控制台(启动一个或新创建的控制台)。

处理WM_CLOSE消息发送到C#Tray App

我发现了一些文章,告诉我如何使用WM_CLOSE消息,但我的应用程序永远不会是那个必须处理WM_CLOSE消息的人。 有没有办法挂钩WM_CLOSE并处理它? 因为WM_CLOSE只关闭托盘图标但不终止进程本身… 问候,

SmtpClient不会通过SSL / TLS进行身份validation(不指向gmail)

我有一个ssl / tls服务器(nodejs),作为postfix / sendmail的代理,对外发邮件执行一些预处理/数据获取。 从C#,我可以使用以下代码手动连接和validation: var sslStream = new SslStream(tcpClient.GetStream(), false, new RemoteCertificateValidationCallback(CertificateValidation), new LocalCertificateSelectionCallback(CertificateSelectionCallback)); string fn = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, “cert.pem”); X509Certificate c = X509Certificate.CreateFromCertFile(fn); var certs = new X509CertificateCollection(); certs.Add(c); sslStream.AuthenticateAsClient(System.Environment.MachineName, certs , SslProtocols.Default, false); 但是,我无法连接SmtpClient。 顶级错误是超时,但我已调试到SmtpClient / SmtpConnection,并且潜在的错误是流不可读,大概是因为它从未经过身份validation(我无法在我的ssl / tls代理服务器中找到一个断点) SmtpClient代码,但上面的手动sslConnection工作正常)。 如果有一种方法可以手动将底层通信流提供给SmtpClient,那将会很棒,但我找不到办法。 任何人都知道为什么下面的代码不会进行身份validation? 这是我用来尝试与SmtpClient连接但未成功的测试应用程序: ServicePointManager.ServerCertificateValidationCallback = CertificateValidation; // Using Ssl3 rather than Tls […]

C#DateTime从yyyy-MM-ddTHH转换:mm:ss到dd MMM yyyy

如何将“yyyy-MM-ddTHH:mm:ss”转换为“dd MMM yyyy”格式? 对于Instance,我想将2013-04-16 05:30:05转换为2013年4月16日。实现此目的的正确方法是什么?

读取对象属性时忽略NullReferenceException

是否有任何方法可以指示C#忽略一组语句的NullReferenceException (或任何特定的exception)。 当尝试从可能包含许多空对象的反序列化对象中读取属性时,这很有用。 有一个帮助方法来检查null可能是一种方法,但我正在寻找一个接近于’On Error Resume Next’(来自VB)的语句级别的块。 编辑:Try-Catch将跳过关于exception的后续语句 try { stmt 1;// NullReferenceException here, will jump to catch – skipping stmt2 and stmt 3 stmt 2; stmt 3; } catch (NullReferenceException) { } 例如:我将XML消息反序列化为对象,然后尝试访问类似的属性 Message.instance[0].prop1.prop2.ID 现在prop2可能是一个空对象(因为它不存在于XML Message中 – XSD中的可选元素)。 现在我需要在访问叶元素之前检查层次结构中每个元素的null。 即在访问“ID”之前,我要检查实例[0],prop1,prop2是否为空。 是否有更好的方法可以避免对层次结构中的每个元素进行空值检查?

正则表达式匹配多个组

我有一个带有正则表达式的字符串的示例,我正在尝试匹配: 正则表达式: ^\d{3}( [0-9a-fA-F]{2}){3} 要匹配的字符串: 010 00 00 00 我的问题是这个 – 正则表达式匹配并捕获1组 – 字符串末尾的最后一个00 。 但是,我希望它能在最后匹配所有三个00组。 为什么这不起作用? 当然,括号应该表示它们都是平等匹配的吗? 我知道我可以分别输入三个组,但这只是一个更长的字符串的简短提取,所以这将是一个痛苦。 我希望这会提供更优雅的解决方案,但似乎我的理解有点缺乏! 谢谢!

system.outofmemoryexception填充DataAdapter时?

我必须从DB中提取150K记录。 我正在使用da.Fill(ds,”Query”)及其抛出system.outofmemoryexception 。 Dim daGrid As New SqlDataAdapter(sqlcmd_q) daGrid.Fill(dsGrid, “Query”) daGrid.Dispose() 我只需要这个数据表。 我不能使用XML。 因为我需要将它分配给MSChartControl来显示ScotterPlot。 有什么建议?

将数据库列映射到常量值,而不需要实体类中的属性

是否可以将数据库列映射到常量值而无需实体类中的属性? 这基本上是一种解决方法,用于在数据库中该列上缺少缺省值,并结合NOT NULL约束。 数据库是外部的,无法更改,但我不需要该表中的所有列,因此不希望在我的实体类中具有相应的属性。 我问这个Hibernate JIRA问题中描述的基本相同。

如何为名称中带空格的列创建复杂的数据类型?

我有一个存储过程,返回列名称中带有空格和短划线的列。 我不能简单地使用“获取列信息”按钮为该存储过程自动生成复杂类型。 如何处理字段名称中的空格和破折号,因为它们不是C#中字段名称的合法字符?

如何动态更改web.config中的连接字符串

我在web.config中定义连接字符串 如何在c#中动态更改连接字符串