Tag: .net

WPF中现有控件的控件模板

如何在WPF中以XAML格式(可视化树)获取现有控件的控件模板? 这有助于在现有模板的帮助下创建新的控制模板。

为什么.NET使用银行家舍入作为默认?

根据文档, decimal.Round方法使用了一个循环算法,这在大多数应用程序中并不常见。 所以我总是最终编写一个自定义函数来做更自然的round-half-up算法: public static decimal RoundHalfUp(this decimal d, int decimals) { if (decimals < 0) { throw new ArgumentException("The decimals must be non-negative", "decimals"); } decimal multiplier = (decimal)Math.Pow(10, decimals); decimal number = d * multiplier; if (decimal.Truncate(number) < number) { number += 0.5m; } return decimal.Round(number) / multiplier; } 有人知道这个框架设计决定背后的原因吗? 在框架中是否有内置的半舍引算法? 或者,也许一些非托管的Windows API? […]

事件处理程序是否停止发生垃圾回收?

如果我有以下代码: MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass = null; pClass会被垃圾收集吗? 还是会在发生事件的时候继续运行呢? 为了允许垃圾收集,我需要执行以下操作吗? MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass.MyEvent -= MyFunction; pClass = null;

当父进程被终止时,终止子进程

我从我的应用程序中使用System.Diagnostics.Process类创建新的进程。 我希望当/如果我的应用程序崩溃,这个进程被杀害。 但是,如果我从任务管理器杀死我的应用程序,子进程不会被终止。 有没有办法让子进程依赖父进程?

什么时候应该使用结构而不是类?

MSDN说,你需要使用结构,当你需要轻量级的对象。 当一个结构比一个类更可取时,还有其他的场景吗? 编辑: 有人忘记了: 1. 结构可以有方法! 2. 结构没有继承能力。 另一个编辑: 我了解技术上的差异,我只是没有一个良好的感觉什么时候使用一个结构。

WPF全局异常处理程序

有时,在不可重现的情况下,我的WPF应用程序崩溃,没有任何消息。 应用程序只需立即关闭。 哪里是最好的地方来实现全球Try / Catch块。 至少我必须实现一个消息框:“抱歉造成不便…”

如何在.NET中产生一个进程并捕获它的STDOUT?

我需要产生一个控制台应用程序的子进程,并捕获它的输出。 我写了一个方法的以下代码: string retMessage = String.Empty; ProcessStartInfo startInfo = new ProcessStartInfo(); Process p = new Process(); startInfo.CreateNoWindow = true; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardInput = true; startInfo.UseShellExecute = false; startInfo.Arguments = command; startInfo.FileName = exec; p.StartInfo = startInfo; p.Start(); p.OutputDataReceived += new DataReceivedEventHandler ( delegate(object sender, DataReceivedEventArgs e) { using (StreamReader output = p.StandardOutput) { retMessage […]

如何在运行时在.NET中添加文件夹到程序集搜索路径?

我的DLL由第三方应用程序加载,我们无法自定义。 我的程序集必须位于它们自己的文件夹中。 我不能把它们放到GAC中(我的应用程序需要使用XCOPY进行部署)。 当根DLL尝试从另一个DLL(在同一个文件夹中)加载资源或类型时,加载失败(FileNotFound)。 是否有可能将我的DLL所在的文件夹以编程方式(从根DLL)添加到程序集搜索路径? 我不允许更改应用程序的配置文件。

什么是逐行读取文本文件的最快方法?

我想逐行阅读一个文本文件。 我想知道如果我在.NET C#范围内尽可能有效地做到这一点。 这是我到目前为止的尝试: var filestream = new System.IO.FileStream(textFilePath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite); var file = new System.IO.StreamReader(filestream, System.Text.Encoding.UTF8, true, 128); while ((lineOfText = file.ReadLine()) != null) { //Do something with the lineOfText }

如何添加一个超时Console.ReadLine()?

我有一个控制台应用程序,我想让用户x秒响应提示。 如果在一段时间后没有输入,程序逻辑应该继续。 我们假设超时意味着空的回应。 什么是最直接的方法来解决这个问题?