我有一个方法(比如method1)写入数据库(sqlserver)和另一个方法(比如method2),它试图在一段时间后访问同一个数据库并更新method1创建的数据行.
当由于局域网被断开而导致方法1无法访问数据库时出现问题(这不是一个例外,如果我的软件中肯定会出现这种情况,如果方法1无法访问db方法2,那么进入细节会使问题过于复杂)无法工作.
我想要做的是如果LAN断开连接,将method1存储值存储到本地数据库而不是服务器,并且一旦它在本地数据库中输入值,应用程序应该在10-15秒之后开始尝试访问服务器.
我应该使用计时器或创建新线程?
我在网上寻找答案,但没有运气.我试过了
- (void)viewDidLoad {
[super viewDidLoad];
twoMinTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timer) userInfo:nil repeats:YES]; }
- (void)timer {
for (int totalSeconds = 120; totalSeconds > 0; totalSeconds--){
timerLabel.text = [self timeFormatted:totalSeconds];
if ( totalSeconds == 0 ) {
[twoMinTimer invalidate];
} } }
Run Code Online (Sandbox Code Playgroud)
但它没有用,当我去那个视图时,标签从2.00变为0.01然后它就停止了.
任何建议都将不胜感激 - 菲利普
我在别处问过类似的问题,但也许我没有问过正确的方法,或者我不够清楚,所以我再问一次.
这是我想要的地方:
我一直在试图使用Process和StartInfo命令,但它们只运行应用程序并立即关闭进程.我需要保持dos框打开并继续读取dos应用程序添加到其中的任何新文本.我也遇到了这个似乎可以解决我的问题的线程,但它是在C#中我无法转换它:
我确实进入了打开命令提示符并启动应用程序的部分,但我不知道如何读取它不时地返回到dos框控制台的数据.我想不断检查变化,以便我可以对它们采取行动,也许使用定时器控件.
请帮忙.
谢谢!
我运行了由Stevedog友情提供的代码并使用它像这样:
Private WithEvents _commandExecutor As New CommandExecutor()
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
_commandExecutor.Execute("c:\progra~2\zbar\bin\zbarcam.exe", "")
End Sub
Private Sub _commandExecutor_OutputRead(ByVal output As String) Handles _commandExecutor.OutputRead
txtResult.Text = output
End Sub
Run Code Online (Sandbox Code Playgroud)
但我得到的只是空白的dos盒子.zbarcam应用程序运行正常,因为我可以看到相机预览,我也可以看到它检测到QR码,但文本没有显示在dos框中,_commandExecutor_OutputRead除非我关闭DOS框,否则不会触发sub.
我创建以下表单,然后单击3个按钮(随机).单击按钮后,必须在单击3秒后显示相关消息.但是,如果我同时点击了另一个按钮,则必须显示该按钮的相关消息,并且必须取消队列中的上一条消息.
例如,如果我button1在11.30.00 点击,则相关消息应仅在11.30.03弹出,如"你点击:1秒前1秒".但是如果我button2在11.30.03之前点击另一个,比如说在11.30.02那么相关的消息应该在11.30.05弹出,比如"你点击:3秒之前的2",并且必须取消预定于11.30.03的消息.
这是我的代码:
private int signal = 0;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
signal = 1;
displayMessage(signal);
}
private void button2_Click(object sender, EventArgs e)
{
signal = 2;
displayMessage(signal);
}
private void button3_Click(object sender, EventArgs e)
{
signal = 3;
displayMessage(signal);
}
private void displayMessage(int number)
{
MessageBox.Show("You clicked : "+number+ "before 3 Seconds");
}
Run Code Online (Sandbox Code Playgroud) 很抱歉发布了另一个关于Java swing和循环的帖子.我已经读完了其他人,但没有一个解决方案真的适合我.好的,现在就解决问题吧.我有一个扩展JFrame的类,其中我有一个运行秒表的Timer,如下所示:
class StopWatch extends TimerTask{
public void run() {
time.setText(String.format("%02d:%02d", minutes_elapsed,seconds_elapsed));
seconds_elapsed++;
if(seconds_elapsed == 60){
seconds_elapsed = 0;
minutes_elapsed++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我的标签"时间"更新的唯一方法是当我调用time.update(time.getGraphics())时,但这比前一次更新.任何想法我应该做什么?我也尝试过重绘,验证和绘画.对我来说,油漆做同样的事情,更新确实...任何想法?PS我不知道它是否重要但我在public void start_timer()函数中创建了Timer,如下所示:
public void start_timer(int minutes, int seconds){
if(timer == null)
timer = new Timer();
timer.scheduleAtFixedRate(new StopWatch(),0,1000);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用C#编写ASP.NET MVC3.我想在for循环的每次迭代之间添加一些延迟.
for(int i=0; i<5; i++)
{
//some code
//add delay here
}
Run Code Online (Sandbox Code Playgroud)
那我该怎么办呢?
我写了一个应用程序,每10秒通过FTP下载文件,我有以下计时器的代码.
timer3.Tick += new EventHandler(updateLogs);
timer3.Interval = (1000) * (10);
timer3.Enabled = true;
timer3.Start();
Run Code Online (Sandbox Code Playgroud)
我的updateLogs函数:
timer3.Enabled = false;
server1_log = downloadLog("192.168.0.217", 1);
server2_log = downloadLog("192.168.0.216", 2);
server3_log = downloadLog("192.168.0.215", 3);
timer3.Enabled = true;
Run Code Online (Sandbox Code Playgroud)
我意识到请求可能需要超过10秒,这就是为什么我在调用downloadLog()之前禁用定时器,然后启用它.
不过,大约一分钟后,应用程序冻结,CPU使用率跃升至45%以上.当我注释掉timer3的代码时,应用程序运行很长时间并且永远不会崩溃.
有任何想法吗?
我有4只狗正在比赛,我需要将它们移动到整个表格上,但是它们不会逐渐移动,它们从起跑线开始并立即传送到终点线,而不会在两者之间移动.每个计时器滴答,其位置.X递增.
我需要一个计时器还是4个计时器?我目前有一个,其间隔设置为400.
这是相关代码:
private void btnRace_Click(object sender, EventArgs e)
{
btnBet.Enabled = false;
timer1.Stop();
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{ while (!isWon)
{
for (i = 0; i < Dogs.Length; i++) // there are four dogs
{
if (Dogs[i].Run()) // Run() returns true if full racetrack is covered by this dog
{
Winner = i + 1;
isWon = true;
MessageBox.Show("We have a winner! Dog #" + Winner);
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在Dog类中:
public bool Run()
{ …Run Code Online (Sandbox Code Playgroud) 可能重复:
Ruby睡眠或延迟不到一秒钟?
我有100-1000个线程正在运行(或更多).这些线程中的每一个都应该在完全相同的时刻执行特定的方法(尽可能最精确).
我能想到的唯一解决方案就是让每个线程都按照某个时间戳的差异进行休眠,但这sleep()并不准确.我也在考虑使用EventMachine而EventMachine::Timer不是,但这似乎更不可靠和准确.
您将使用什么技术来获得最佳效果?
我已经看到很多关于这个主题的答案,但仍然找不到一个干净的解决方案.
public class ProcessScheduler {
static {
Timer timer=new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
LogProcessorServiceImpl.processPageRequestsLogs();
}
}, 0, 120);
}
}
Run Code Online (Sandbox Code Playgroud)
如何使其执行并对质量解决方案感到满意?我的应用程序基于Spring(不幸的是),我知道我可以在我的一个控制器中引用这个类,它可能会工作.但那太傻了.必须有一个更好的方法.我在Tomcat上没有EJB支持,因此定时器注释对我不起作用.另外,我不想做CRON.我想在此调度程序类中安排所有维护任务.
Servlet类可以通过web.xml(1)加载.我们可以在非servlet类上做类似的事情吗?