Articles of .net

在Linux下AutoResetEvent的C ++等价物是什么?

AutoResetEvent在MSDN中的说明 我正在尝试将在C#中实现的线程池移植到Linux下的C ++中。 我不知道我应该使用哪些function与“AutoResetEvent”类似的行为。

Linux世界中是否有与.Net FileSystemWatcher相当的function?

我发现.Net FileSystemWatcher类非常方便编写实用程序,当文件显示在他们的监视文件夹中时它们会自动生效。 在* nix世界中是否有与此function相同的function,可以让我观看文件夹(可能还有其所有子目录)? 编辑:最好这将是不需要内核补丁的东西。

在Linux中运行.NET EXE

有什么办法可以在Linux 下运行.NET EXE(winform应用程序), 而无需在linux中构build代码? 事实上,我没有我以前开发的一些实用程序的代码,并希望在Linux中运行它们。 关于: 使用Mono进行C#开发的可行性

如何用C#.NET编写程序,在Linux / Wine / Mono上运行它们?

在这种特殊情况下,我需要为Linux运行复杂的.NET应用程序。 复杂的我的意思是 – 这个项目开发了3年,我不想再写在Java或其他东西,开发和支持,以后的.NET和Java版本。 应用程序正在生成鼠标和键盘事件(通过winapi / dll导入)并使用串行端口。 我也有几个计时器延迟 – 串口通信(10-20ms,我不需要很大的精度)。 其余的只是很多简单的代码,没有什么特别的,没有奇怪的控制,没有directx等 我应该期待什么? 这会工作吗? 如果代码的某些部分会失败 – 我可以稍微改变一下,在.net应用程序和Linux上的迷你应用程序之间build立networking连接,我可以编写发送鼠标和键盘事件或RS232通信。 另外我想问一下Wine和.NET: 如何编写应该在Linux / Wine / Mono上运行的.NET应用程序? 哪个版本的框架? (1.x,2.0还是可以使用3.5?) 我应该避免(从Windows dll?定时器导入?) 编辑/从评论移动: 几年前我看到了单声道,但是很糟糕。 现在我看到它成长起来,支持LINQ,线程和其他复杂的function。 另外现在的帮助看起来非常严重。 我还没有接受答案,因为我看到人们仍然张贴非常有用的链接。 如果这个问题得到很多+1,我会重写它,也许这会帮助别人。 我希望这里的人有一些Linux上的.NET的实践经验…

如何使用mono将.NET Windows Service应用程序迁移到Linux?

使用mono将.NET Windows服务迁移到Linux最好的方法是什么? 我一直在试图避免执行该应用程序作为预定的命令。 是否有可能获得一个服务/系统守护进程(在Linux中)的行为?

得到所有打开的窗口的标题

如何检索所有打开的窗口的标题(包括Internet Explorer中的选项卡等窗口)?

最佳文件缓冲区读取大小?

我正在写一个需要阅读相当大的文件的应用程序。 我一直想知道现代Windows XP计算机上读取缓冲区的最佳大小。 我search了一下,发现了很多例子,其中最佳尺寸为1024。 这里是我的意思的片段: long pointer = 0; buffer = new byte[1024]; // What's a good size here ? while (pointer < input.Length) { pointer += input.Read(buffer, 0, buffer.Length); } 我的应用程序相当简单,所以我不想写任何基准代码,但想知道什么尺寸是常见的?

我可以通过.Net获得与安装的打印机相关的图标吗?

我知道如何获得所有已安装的打印机在.Net机器上的列表: foreach (String printer in PrinterSettings.InstalledPrinters) { Console.WriteLine(printer.ToString()); } Console.ReadLine(); InstalledPrinters只是一个string列表。 有没有办法让安装的打印机对象同时包含我通常在Windows资源pipe理器中的“设备和打印机”下看到的名称和图标图像?

.NET Charting图例标记大小

我正在.NET Windows窗体项目上使用DataVisualizations Charting控件。 我遇到的问题是,当我打印图表时,图例并没有显示系列标记(实际上它是一种显示,但它看起来像线上较暗的像素)。 当在表单上查看图表时,标记是可见的,尽pipe它们不是很大,并且与系列的MarkerSize值相比似乎没有改变。 但是当图表打印时(在纸上或PDF上),标记不在那里。 此图显示了在表单上查看图表的视图。 正如你所看到的,图例标记是可见的,但仍然没有接近实际系列标记的位置。 该图显示了同一图表的PDF版本。 如果你眯起眼睛,你可以在图例中心看到较暗的像素。 如何修复图例标记,以便在印刷时实际显示并使其变大?

ManagedThreadID和操作系统ThreadID之间的关系

我正在研究一个multithreading的C#Windows应用程序,这个应用程序会频繁调用本地dll。 这些阻止有时可能持续相当长时间的电话。 在某些情况下,我想从主线程中取消一些工作线程的阻塞调用。我使用的本地API提供了一个用于此目的的函数: HRESULT CancelBlockingCall(DWORD ThreadID) 虽然CancelBlockingCall()的文档不是很清楚,但我相信我需要传递阻塞在调用上的OS级线程的ThreadID。 根据我从CancelBlockingCall()得到的返回码,我意识到Thread.ManagedThreadID不是我所需要的。 我在msdn上find了以下内容(请参阅注释) : 操作系统ThreadId与托pipe线程没有固定关系,因为非托pipe主机可以控制托pipe线程和非托pipe线程之间的关系。 具体而言,复杂的主机可以使用CLR Hosting API来针对相同的操作系统线程调度多个托pipe线程,或者在不同的操作系统线程之间移动托pipe线程。 这是否意味着我没有办法正确调用一个托pipe线程的CancelBlockingCall()? 是否无法确定托pipe线程当前正在执行的操作系统级线程的线程ID?