Articles of .net

如何保持ReadDirectoryChangesW缺less文件更改

有很多文件活动的时候,网上有很多关于ReadDirectoryChangesW API函数缺less文件的文章。 大多数责怪ReadDirectoryChangesW函数循环被调用的速度。 这是一个不正确的假设。 我所看到的最好的解释是在下面的post,2008年4月14日星期一下午2:15:27的评论 http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/4465cafb-f4ed-434f-89d8-c85ced6ffaa8/ 总结是ReadDirectoryChangesW函数报告文件更改,因为它们离开文件写入队列,而不是添加它们。 如果在犯罪之前添加了太多,就会失去其中一些的注意。 你可以看到这个与你的实现,如果你只是写一个程序,以真正快速生成一个目录中的超过1000个文件。 只要记下你得到的文件事件通知的数量,你会看到有些时候你不会收到所有的事件通知。 问题是,有没有人find一个可靠的方法来使用ReadDirectoryChangesW函数,而不必每次刷新卷? 这是不允许的,如果用户不是pipe理员,也可能需要一些时间才能完成。

生成机器指纹的最佳方法是什么?

我需要生成一个独特的string,这将不同的机器之间 – “设备指纹”。 什么是… 自定义实现的可能方法? (我有几个想法,但我认为你们可能有更好的) 现有解决scheme (商业/非商业都可以接受)

防止将数字粘贴到.net窗体中的文本框中

我已经阻止使用按键事件键入文本框中的数字。 但是当使用Ctrl + V或通过鼠标粘贴内容时,数字将被input到文本框中。 如何防止这一点? 除了数字,我必须允许粘贴/键入所有文本。

.net开源和运行平台select

我们被要求为一个大项目研究一个完全开源的解决scheme,他们希望这个项目尽可能接近100%的开源,主要是因为这是一个社区项目,未来可能只有很less的钱,用于主机的运行。 使用操作系统软件可节省许可成本,因为服务器将由现有的IT系统团队进行内部pipe理。 其中一个供应商是提出.net作为系统的组成,这很好,我知道.net应用程序可以正确地在GPL等开源许可下发布。 然而,因为我不是一个.net开发者,所以在涉及.net的权力方面,我有点困惑。 它是否必须是一个Windows服务器,这当然会导致更高的服务器成本和与MS产品的联系,或者可能在Linux等开源服务器上运行.net应用程序。 请不要把它变成一个MS Vs Linux的参数和好处,或者使用其中一个。 我们只是想确保我们充分了解使用.net的信息,以及它是如何开源的。 我希望能打开我的眼睛。

你能解释为什么DirectoryInfo.GetFiles产生这个IOException吗?

我有一个运行在Novellnetworking上的WinForms客户端服务器应用程序,当连接到networking上的独立Windows 2003 Server时,产生以下错误: TYPE: System.IO.IOException MSG: Logon failure: unknown user name or bad password. SOURCE: mscorlib SITE: WinIOError at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption) at System.IO.DirectoryInfo.GetFiles(String searchPattern, SearchOption searchOption) at System.IO.DirectoryInfo.GetFiles(String searchPattern) at Ceoimage.Basecamp.DocumentServers.ClientAccessServer.SendQueuedFiles( Int32 queueId, Int32 userId, IDocQueueFile[] queueFiles) at Ceoimage.Basecamp.ScanDocuments.DataModule.CommitDocumentToQueue( QueuedDocumentModelWithCollections […]

.NET Core性能计数器的故事是什么?

在Windows下,可以使用以下命令读取.NET性能计数器: 性能监视器 C#使用PerformanceCounter WMI和查询.NET相关的类 考虑到最近发布的.NET Core以及这样的应用程序也可以在Linux中运行的事实,如何访问Windows上当前可用的.NET相关统计信息?

是否有可能等到其他线程处理过程input消息?

我想模拟用户input到其他窗口可靠。 我为此使用SendInput ,但是之后我需要等到目标应用程序在发送更多消息之前处理input。 据我所知, SendInput ,尽pipe它的名字,真正的消息发送到队列,不等待,直到他们被处理。 我的尝试是基于这个想法,直到消息队列至less一次是空的。 因为我不能直接检查其他线程消息队列(至less我不知道这样做),所以我使用AttachThreadInput将目标线程的队列附加到该线程的队列,然后使用PeekMessage进行检查。 为了检查function,我使用一个窗口和一个button的小应用程序。 当点击button时,我调用Thread.Sleep(15000)有效地停止消息处理,从而确保在接下来的15s消息队列不能为空。 代码在这里: public static void WaitForWindowInputIdle(IntPtr hwnd) { var currentThreadId = GetCurrentThreadId(); var targetThreadId = GetWindowThreadProcessId(hwnd, IntPtr.Zero); Func<bool> checkIfMessageQueueIsEmpty = () => { bool queueEmpty; bool threadsAttached = false; try { threadsAttached = AttachThreadInput(targetThreadId, currentThreadId, true); if (threadsAttached) { NativeMessage nm; queueEmpty = !PeekMessage(out nm, hwnd, […]

为什么没有Microsoft.Win64命名空间?

我们有一个Microsoft.Win32命名空间,但它是保证在64位Windows环境中工作? 对于64位的情况,是否需要有相同的定义?

.NET或Windows同步基元性能规范

我目前正在撰写一篇科学文章,在那里我需要非常确切地引用。 有人可以指向我MSDN,MSDN文章,一些发表的文章来源或一本书,在那里我可以findWindows或.NET同步原语的性能比较。 我知道这些是在下降的性能顺序:互锁API,关键部分,.NETlocking语句,监视器,互斥体,EventWaitHandle,信号量。 非常感谢, Ovanes PS我发现了一本好书: Joe Duffy在Windows上的并发编程 。 本书是由.NET Framework的头部并发开发人员之一编写的,其内容非常精彩,有很多解释,如何工作或实现。

C#同步进程启动

我试图从一段代码开始一个进程,但我希望代码暂停执行,直到进程完成并退出。 目前,我正在使用System.Diagnostics.Process.Start()类来启动(特别是)卸载程序,之后执行的代码在继续执行之前依靠安装程序的卸载程序完成。 这是代码。 using System.Diagnostics; var procStIfo = new ProcessStartInfo("cmd", "/c " + variableContainingUninstallerPath); procStIfo.RedirectStandardOutput = true; procStIfo.UseShellExecute = false; procStIfo.CreateNoWindow = true; var proc = new Process(); proc.StartInfo = procStIfo; proc.Start();