Tag: .net

在Dictionary中使用IEqualityComparer与HashCode和Equals()的效率

我认为标题非常清楚。 我想知道在Dictionary使用IEqualityComparer时是否存在一定的效率开销?提供一个时它是如何工作的? 谢谢

服务器可以处理的FileSystemWatcher实例数量有哪些实际限制?

我有一个Windows服务,目前正在实例化大约十几个FileSystemWatcher实例,以监控整个公司网络中的共享文件夹,以便处理文件。 我正在考虑添加更多实例,所以我想知道这里是否有人(生产系统)有关生产系统可以可靠处理的FileSystemWatcher实例数量的实际限制是什么? 编辑:在我的情况下,不修改InternalBufferSize属性,因此InternalBufferSize是默认的8 KB …我假设InternalBufferSize的增加会影响系统可以同时运行的FileSystemWatcher实例的数量,因此这也是方程的一部分… 编辑:如果您认为这仅仅是一个资源问题,它只取决于可用内存的数量或系统的其他硬件方面,请分享您的经验或指向证实您的意见的文档或文章的链接……我会真的很想听听那些在生产中达到极限的人,无论他们的硬件规格如何,所以请在投票前仔细考虑其他7个人在不到20分钟的时间内表示有兴趣听到那些推动限制的人…

从另一个线程中捕获exception

我有一个在单独的线程中运行的方法。 该线程是从Windows应用程序中的表单创建和启动的。 如果从线程内部抛出exception,将其传递回主应用程序的最佳方法是什么。 现在,我将对主窗体的引用传递给线程,然后从线程调用该方法,并使该方法被主应用程序线程调用。 是否有最好的练习方法,因为我现在对自己的表现不满意。 我的表格示例: public class frmMyForm : System.Windows.Forms.Form { /// /// Create a thread /// /// /// private void btnTest_Click(object sender, EventArgs e) { try { //Create and start the thread ThreadExample pThreadExample = new ThreadExample(this); pThreadExample.Start(); } catch (Exception ex) { MessageBox.Show(ex.Message, Application.ProductName); } } /// /// Called from inside the […]

BackgroundWorker.CancellationPending是如何线程安全的?

取消BackgroundWorker操作的方法是调用BackgroundWorker.CancelAsync() : // RUNNING IN UI THREAD private void cancelButton_Click(object sender, EventArgs e) { backgroundWorker.CancelAsync(); } 在BackgroundWorker.DoWork事件处理程序中,我们检查BackgroundWorker.CancellationPending : // RUNNING IN WORKER THREAD void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { while (!backgroundWorker.CancellationPending) { DoSomething(); } } 上述想法遍布整个网络,包括在BackgroundWorker的MSDN页面上 。 现在,我的问题是:这个线程安全怎么样? 我查看了ILSpy中的BackgroundWorker类 – CancelAsync()只是将cancellationPending设置为true而不使用内存屏障,而CancellationPending只返回cancellationPending而不使用内存屏障。 根据这个Jon Skeet页面 ,上面的内容不是线程安全的。 但是BackgroundWorker.CancellationPending的文档说:“这个属性是供工作线程使用的,它应该定期检查CancellationPending并在设置为true时中止后台操作。” 这里发生了什么? 它是否是线程安全的?

NHibernate或LINQ to SQL

如果开始一个新项目,你将使用什么ORM NHibernate或LINQ以及为什么。 每种方法的优缺点是什么? 编辑:LINQ to SQL不只是LINQ(感谢@Jon Limjap)

数据访问层的设计模式

你可能觉得这是家庭作业,因为我很抱歉。 我搜索过但找不到合适的答案。 所以我的问题是: 我有几个类,每个类都有一个保存方法。 所以我为数据库处理创建了一个单独的类。 namespace HospitalMgt.Data { public static class DBConnection { public static string constr = “Data Source=ABD;Initial Catalog=HospitalMgt;User Id=sa;Password=123”; public static SqlConnection con; // public static SqlCommand com; public static SqlConnection OpenConnection() { con= new SqlConnection(constr); con.Open(); return con; } } } 但是,我不认为使用DBConnection类实现所有类是合适的。 我的问题 : 什么设计模式适合克服这个问题? 将DBConnection创建为类是一种好习惯吗? (或者它应该是一个接口) 我使用Factory方法找到了一些关于DA图层的文章,但据我所知,这种模式不适合我的情况。

ASP.NET MVC(域模型,存储库,流畅,服务 – 我的项目的结构)

在我的ASP.NET MVC Web应用程序中,我有: 域模型,由LINQ to SQL创建 存储库如 UserRepository和OrderRepository IQueryable Fluents作为IQueryable扩展方法,如 public IQueryable GetNewOrders(this IQueryable) 服务如 UserService和OrderService 实用类和扩展方法,如 CryptoUtility (做Hashing等)和String等扩展 ViewModels对每个MVC视图都是特殊的 ASP.NET MVC项目本身(控制器,视图) 我正在为我的案例寻找最好的项目结构/组织,特别是分成不同的程序集以及这些层之间的依赖关系应该如何。 遗憾的是,网络资源没有详细说明。 一个提示:目前Repository,Services,IQueryable Fluents等直接针对域模型实现,我没有它们的接口定义。 我认为这是不必要的,但松散耦合可能需要这个吗? 我的服务有一个接口(例如IOrderService),我的存储库实现了IRepository 。 感谢您以简洁的方式组织这一点,特别是哪个层应该依赖于什么和组装组织。 谢谢!

asp.net mvc @ Html.CheckBoxFor

我的表格中有复选框 我添加了我的模型 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace CorePartners_Site2.Models { public class CareerForm { //…. public List EmploymentType { get; set; } } } public class CheckBoxes { public string Text { get; set; } public bool Checked { get; set; } } 并在我的表格中添加 @Html.CheckBoxFor(model => model.EmploymentType, new { id = “employmentType_1” […]

.Net Core 2.0 Windows服务

我正在尝试在.Net Core 2.0中构建一个Windows服务,但是我一直在墙上敲了一整天,没有任何进展。 一切似乎都使用Core 1.0 / 1.1甚至Microsoft文档: 在Windows服务中托管ASP.NET Core应用程序 就我所见, TopShelf也不支持2.0。 我已经看到一些奇怪的解决方案,将所有代码放在.Net标准类库中,然后使用.Net Framework应用程序来托管Windows服务,但这在我看来并不优雅,我试图获得完全摆脱.Net Framework。 我现在想要做什么呢? 我错过了一些非常基本的东西吗

为什么这段代码没有unsafe关键字?

在回答他自己有争议的问题时 , Mash已经说明你不需要“unsafe”关键字直接读写任何.NET对象实例的字节。 您可以声明以下类型: [StructLayout(LayoutKind.Explicit)] struct MemoryAccess { [FieldOffset(0)] public object Object; [FieldOffset(0)] public TopBytes Bytes; } class TopBytes { public byte b0; public byte b1; public byte b2; public byte b3; public byte b4; public byte b5; public byte b6; public byte b7; public byte b8; public byte b9; public byte b10; public byte […]