草庐IT

c# - 制作一个持续运行的 C# 应用程序

我正在编写一个客户端应用程序,将数据从用户计算机推送到网站。我希望此应用程序每60秒更新一次网站。现在我的函数被包裹在一个无限的while循环中,有45秒的sleep时间。但是,Windows表示应用程序没有响应,即使它更新了网站。以下是我的代码的结构。 最佳答案 您的问题是您的while循环阻塞了UI线程。要解决此问题,您需要在单独的线程上运行代码。最简单的方法是开始……可能是使用Timer:System.Timers.Timertimer=newSystem.Timers.Timer(45000);//timerwillexec

linux - PostgreSQL:CURRENT_TIMESTAMP 和 CLOCK_TIMESTAMP 解决方案:Windows 与 Linux?

所以我对PostgreSQL计时函数有这个有趣的问题。情况是这样的。我们有一个预生产服务器(Linux),用于存放我们正在开发的应用程序。我还在该数据库(Windows)的本地副本上做一些工作,以防服务器正在进行一些更重要的工作。我最近遇到了一个问题,我开始在本地数据库副本的日志表上发现主键违规。我认为这是不可能的,因为我使用CLOCK_TIMESTAMP(当前系统时间)作为主键。此外,我在预生产服务器上进行了测试,它运行良好。所以我做了一些调查。我最终发现,如果我在服务器上运行“SELECTCLOCK_TIMESTAMP()”,它会将时间返回到微秒。如果我在我的本地主机上运行它,它只

用于按指定时间间隔重命名文件的 Windows 批处理文件

我想编写一个Windows批处理文件,目的是每25秒重命名一个文件。我还希望批处理文件在300秒后终止。我该怎么做呢?这是我到目前为止所拥有的。STARTRENAMEtest.gtest.goSLEEP25RENAMEtest.gotest.gGOTOSTART 最佳答案 嗯,这并不难。有很多众所周知的批处理技巧,例如误用ping来休眠(这使您不必集成非标准工具),然后我们可以得出以下结论:@echooffsetlocalsetn=0:startrentest.gtest.gopinglocalhost-n26>nul2>&1ren

C# winform 闪烁标签背景色延迟

我有一个winform应用程序,我需要使标签背景颜色闪烁。我正在尝试使用for循环和Thread.Sleep来做到这一点,但不起作用。感谢您的帮助和建议:privatevoidbutton1_Click(objectsender,EventArgse){for(inti=0;i 最佳答案 为此任务使用UI计时器,而不是休眠。你让主线程一直处于休眠状态,并且你正在阻止用户输入。使用Thread.Sleep几乎总是表明您做错了什么。Thread.Sleep正确的情况很少。具体来说,让UI线程休眠是永远不正确的。放一个Timer在表单组件

c# - 如何使定时器以重复的方式触发

我有一个计时器,我想在每个星期一下午5点过期。在测试应用程序时,一到星期一下午5点,我的任务就会按预期触发。但是,当我将系统日期和时间更改为下周下午5点时,任务不会触发。这是我的代码:Timertimer=newTimer(callback,application,timeToEnd,TimeSpan.FromDays(7));我感觉它与TimeSpan.FromDays(7)部分有关。有什么想法吗? 最佳答案 这不是Timer的好用法。您应该创建一个控制台应用程序来执行您想要的操作,然后使用WindowsScheduler或第3方

c++ - SetTimer(带回调函数)是否通过启动一个新线程来工作?

使用SetTimer时这样:SetTimer(hWnd,IDT_TIMER_LONGPROCESSING,2000,(TIMERPROC)NULL);DoSomethingElse();执行会立即继续(即它是非阻塞并且DoSomethingElse()会立即执行),但是当此消息到达时caseWM_TIMER:if(wParam==IDT_TIMER_LONGPROCESSING)DoAOneSecondLongJob();然后它在1秒长的处理过程中再次阻塞“窗口消息循环”,导致界面无响应。这是SetTimer的正常行为,只是发布一条计时器消息。但我看到SetTimer也可以以第二种方式

windows - 在定义的时间内等待窗口消息

我正在用winapi编程。如何在定义的时间内等待消息?如果没有消息,我可以做另一个任务。我不能使用Sleep,因为窗口回调过程会被延迟。while(true){...//waitamessagefor30milisecondsGetMessage(&message,hwnd,0,0))orPeekMessage(&message,hwnd,0,0,PM_REMOVE)...if(no_message){call_a_function();}else{if(finish)break;TranslateMessage(&message);DispatchMessage(&message);

c# - System.Timers.Timer timer1_Elapsed 未触发!帮助!

我正在创建另一个Windows服务,但我的计时器没有计时,我不知道为什么!我像以前的服务一样使用system.timers.timer,但它不起作用。我尝试附加到它,但它似乎没有做任何事情。我的代码:namespaceExpiryNotifier{publicpartialclassExpiryNotifier:ServiceBase{publicExpiryNotifier(){InitializeComponent();if(!System.Diagnostics.EventLog.SourceExists("ExpiryNotifier")){System.Diagnostics

c++ - 在 Windows X 按钮上单击并按住鼠标时 WM_TIMER 消息被抑制

我正在开发一款客户端需要继续处理Windows消息的游戏,否则游戏可能会被利用。为了解决窗口调整大小和拖动事件期间的这个问题,我们有一个每50毫秒触发一次的WM_TIMER消息,这将重新启动主事件循环。问题是,当用户单击并按住X或窗口客户端的最小化按钮时,此技术不起作用。(所以他们没有完成点击,他们只是停止了客户端。)使用Spy++,我看到的最后消息是:00160D3CPWM_NCLBUTTONDOWNnHittest:HTCLOSExPos:1150yPos:17800160D3CPWM_MOUSEMOVEfwKeys:MK_LBUTTONxPos:1014yPos:-23在我移动鼠

c# - 在没有计时器的情况下保持 Windows 服务运行

目前,我所看到的C#中Windows服务的唯一示例是计时器每x秒运行一次方法-例如检查文件更改。我想知道是否有可能(如果可能的话使用示例代码)让Windows服务在没有计时器的情况下运行,而只是让服务监听事件-就像控制台应用程序仍然可以监听事件和避免在不需要计时器的情况下使用Console.ReadLine()关闭。我本质上是在寻找一种方法来避免事件发生和执行操作之间的x秒延迟。 最佳答案 Windows服务不需要创建计时器来保持运行。它可以建立一个文件观察器UsingFileSystemWatchertomonitoradirec