Tag: polling

不使用FilesystemWatcher的文件夹侦听器

我需要在C#中创建一个监听器来监视共享文件夹(UNC路径),并在到达时将具有特定扩展名(* .json)的文件复制到目标文件夹。 文件可以延迟大约半分钟。 该文件夹永远不会为空。 问题: 文件将到达新的子文件夹,FileSystemWatcher无法使用,因为它无法侦听共享文件夹中的子文件夹。 这些文件需要复制并保留在文件夹中,因此我们需要确保不会多次复制同一文件。 编辑/更新的文件需要再次复制并覆盖在目标文件夹中。 其他文件将在文件夹中,新文件将到达我们需要忽略的(没有正确的扩展名)。 我考虑过轮询文件夹,但我没有想出一个好的实现。 我很确定我不能使用FilesystemWatcher对象,但也许有人可以找到使用它的智能解决方案。

使用.NET框架监视目录中文件更改的可靠方法

我正在寻找一种可靠的方法来查找目录中的更改。 我尝试过使用FileSystemWatcher,但是当创建,更改或删除许多小文件时,这是相当不准确的。 它错过了我测试中大约1%或2%的文件。 当您快速添加或更改数千个文件时,这是非常多的。 我已尝试以500毫秒,2000毫秒等不同间隔进行轮询更改。在这种情况下,我得到了太多的点击。 这可能与FileInfo对象上的时间戳分辨率有关。 所以我的问题是; 是否有可能使用.NET Framework可靠地获取对目录的更改? – 基督徒

如何自动化使用Web服务的任务

我有一个winform应用程序需要使用Web服务 。 Web服务在数据库中检查是否有任何更改。 如果数据库中有任何更改,则应通知winform应用程序并相应地执行某些任务。 我怎么做? 我想在我的winform应用程序中使用计时器,然后说每5分钟连接一个Web服务并检查数据库中是否进行了新的更改。 还有其他办法吗? 更新: 我在这里根据答案发布代码: class PerformTasks { public static bool checkIfInProgress { get; set; } public static void InitializeWebService() { try { Timer = new System.Timers.Timer(2000); Timer.Elapsed += OnTimedEvent; Timer.Enabled = true; } } private static void callService() { using (var service = new WebServiceSoapClient()) { checkIfInProgress = true; task1(); […]

串行端口轮询和数据处理

我试图从传感器到微控制器的几个串口读取。 每个串行端口将接收超过2000个测量值(每个测量值为7个字节,全部为hex)。 他们同时开枪。 现在我正在从4个串口进行轮询。 此外,我将每个测量值转换为String并将其附加到Stringbuilder。 当我完成接收数据后,它们将被输入到文件中。 问题是CPU消耗非常高,从80%到100%不等。 我浏览了一些文章并将Thread.Sleep(100)放在最后。 它可以在没有数据时减少CPU时间。 当BytesToRead小于100时,我还在每次轮询结束时放置Thread.Sleep。它只在某种程度上有所帮助。 有人可以提出一个解决方案来从串口轮询并处理我得到的数据吗? 也许每次我得到的东西附加都会导致问题? //I use separate threads for all sensors private void SensorThread(SerialPort mySerialPort, int bytesPerMeasurement, TextBox textBox, StringBuilder data) { textBox.BeginInvoke(new MethodInvoker(delegate() { textBox.Text = “”; })); int bytesRead; int t; Byte[] dataIn; while (mySerialPort.IsOpen) { try { if (mySerialPort.BytesToRead != 0) { //trying to […]