我是Android应用程序开发的新手,所以我知道我可能会让事情变得太复杂.
下面的代码按预期工作(经过几个小时!!!),但我很好奇我是否正确处理两个线程的实现?就像我说它至少运行,但我不确定是否一切都是必要的.
PS:奖励积分向我展示将厘米转换为h:m:s:c的公式,这样我就不必使用那个可怕的字符串长度解决方案我找到了哈哈![编辑......见下文,我找到了这部分的答案]
package com.test.advancedtimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
String time; //Clock's combined time
String elapsedTime; //Stopwatch elapsed time
int stopwatchHour = 0;
int stopwatchMin = 0;
int stopwatchSec = 0;
int stopwatchCentiSec = 0;
int elapsedSeconds = 0;
int elapsedCentiseconds = 0; //cumulative Centiseconds elapsed since starting countdown
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
updateTime();
}
//First timer that …Run Code Online (Sandbox Code Playgroud) 我可以用一个计时器更改我的ForeColor标签吗?我试过这种方法,但我不知道为什么我的第一个标签变成了红色.这是我的代码:
private void timer1_Tick_1(object sender, EventArgs e)
{
label1.ForeColor = Color.Red;
if (timer1.Interval == 3499)
{
label1.ForeColor = Color.Black;
}
if(timer1.Interval == 3500)
{
label2.ForeColor = Color.Red;
}
if(timer1.Interval == 4199)
{
label2.ForeColor = Color.Black;
}
}
Run Code Online (Sandbox Code Playgroud)
如何用单个计时器改变我的前景?
我是C#的新手,我正在尝试了解计时器功能..我制作了一个标签,一个文本框和一个按钮,还添加了一个计时器.
我有一个int设置为1000 = 1秒.
我希望能够在文本框中输入一个值,即5,然后计时器将其用作每个刻度之间的间隔.
由于某种原因,它说"不能隐式转换类型"字符串为int"
我不知道如何将字符串转换为int ..
任何例子?会帮到我这么多!
namespace Clicker
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int count = 0;
int interval = 1000;
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
interval = textBox1.Text;
}
private void timer1_Tick(object sender, EventArgs e)
{
count++;
label1.Text = count.ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud) 当按下"i,j,k,l"键(如箭头键)时,我试图制作一个能够移动的圆,并在释放时停止.尝试创建一个Timer,以便在再次移动之前等待一秒,这样动画就可以了,但是因为我创建了'while(!quit)'循环,所以没有图形移动或显示.你能指出我的错误吗?
码:
import java.awt.*;
import java.awt.Color.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Timer;
import java.util.TimerTask;
public class Event_test{
public static void main(String args[])
{
boolean quit = false;
JFrame Window = new JFrame("Event_test");
MyCanvas WCanvas = new MyCanvas();
KeyCatcher k = new KeyCatcher();
WCanvas.addKeyListener(k);
Window.getContentPane().add(WCanvas);
Window.setSize(640, 360);
Window.setVisible(true);
Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
new Notification(1);
while(!quit)
{
WCanvas.update(WCanvas.getGraphics());
if(!Notification.flag)
{
continue;
}
else
{
Notification.flag = false;
System.out.println("tic");
/*
CONTROLS:
*/
if(KeyCatcher.KEYS[0])
{
MyCanvas.x--;
}
if(KeyCatcher.KEYS[1])
{
MyCanvas.y++;
}
if(KeyCatcher.KEYS[2])
{
MyCanvas.x++;
}
if(KeyCatcher.KEYS[3])
{ …Run Code Online (Sandbox Code Playgroud) 嘿我正在创建一个与另一个交互的程序,我正在尝试设置一个计时器!
我想要一个以mm:ss格式计数的计时器
int seconds = 0;
int minutes = 0;
private void timer1_Tick(object sender, EventArgs e)
{
seconds++;
lblView.Text = seconds.ToString();
}
Run Code Online (Sandbox Code Playgroud)
现在,我正处于一个标签在几秒钟内上升的阶段,但我想要它显示分钟和秒.我查了一下,我读了一些关于TimeSpan的信息,请访问https://msdn.microsoft.com/en-us/library/ee372287(v=vs.110).aspx
我遇到过这种方法:
public static double ConvertSecondsToMinutes(double seconds)
{
return TimeSpan.FromSeconds(seconds).TotalMinutes;
}
Run Code Online (Sandbox Code Playgroud)
但不知道如何将其实现到我的代码中.我正在寻找正确的方法来做到这一点.谢谢
我想在C中编写函数,需要几秒和几纳秒作为输入.将秒和纳秒转换为微秒,以微秒为单位返回总数.
unsigned long long get_microseconds(int seconds, unsigned long long nSeconds);
Run Code Online (Sandbox Code Playgroud)
现在转换非常简单.我可以使用以下公式 -
mSeconds =秒*1000000 + nSeconds/1000(纳秒转换精度损失不错,我的计时器无论如何最小分辨率为100微秒)
如果不使用乘法和除法运算符来获得最佳精度和最小数量的cpu周期,那么实现此等式的最快方法是什么.
编辑:我正在使用基于GNU但定制设计的工具链的自定义DSP上运行.我还没有真正测试过算术运算的性能,我只是想知道它是否会影响性能,是否有办法改进它.
正如标题中所写,Timer Interval中的某些内容似乎已关闭.计时器应该从"DateTimePicker"获取时间,将其转换为秒并将Interval更改为DateTimePicker上设置的时间.之后它应该在推特上发布推文,虽然它不起作用.它只是一遍又一遍地发送垃圾邮件.
private void IntervalChoose_ValueChanged(object sender, EventArgs e) //DateTimePicker
{
postInterval.Interval = (IntervalChoose.Value.Hour * 3600) + (IntervalChoose.Value.Minute * 60) + IntervalChoose.Value.Second;
saveTimerInterval = postInterval.Interval; //saveTimerInterval is set 0 at the beginning
MessageBox.Show("Current Interval in Seconds: " + postInterval.Interval.ToString());
}
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "Start Bot") //Starts program (works)
{
IntervalChoose.Enabled = false;
MessageBox.Show(saveTimerInterval.ToString());
postInterval.Interval = saveTimerInterval; //Sets the interval (once again, safecall)
postInterval.Start(); //starts posting.
button1.Text = "Stop Bot";
}
private void postInterval_Tick(object sender, …Run Code Online (Sandbox Code Playgroud) 我在窗体上有一个启动和停止按钮,用于启动和停止重复的SQL查询,该查询将数据发送到pubnub通道.当我启动表单并单击开始时,我看到了我对订阅客户端的期望.但是,如果我单击停止然后再次启动,我现在会获得重复数据.第三次给我三份数据,等等.是什么导致了这个?以下是启动和停止方法:
private void btnQuery1Start_Click(object sender, EventArgs e)
{
lblQuery1Status.Text = "Status: Running";
btnQuery1Start.Enabled = false;
txtQuery1Interval.Enabled = false;
btnQuery1Stop.Enabled = true;
query1Timer.Elapsed += new ElapsedEventHandler(doQuery1);
query1Timer.Interval = Convert.ToInt32(txtQuery1Interval.Text) * 1000;
query1Timer.Enabled = true;
}
private void btnQuery1Stop_Click(object sender, EventArgs e)
{
btnQuery1Start.Enabled = true;
btnQuery1Stop.Enabled = false;
txtQuery1Interval.Enabled = true;
query1Timer.Enabled = false;
lblQuery1Status.Text = "Status: Stopped";
}
Run Code Online (Sandbox Code Playgroud)
我可以发布,doQuery1如果有必要,但它使用OdbcConnection和数据读取器获得单个整数结果然后它序列化Newtonsoft.Json并使用它发送Pubnub.publish().我希望尽管这是显而易见的,我只是在btnQuery1Start_Click()上面的方法中遗漏了.
对于测试我设置了一个简单计算int每秒的类:
class TestComp1
{
public TestComp1()
{
var timer = new Timer(o => TestInt++,null,0,1000);
}
[ViewableProperty]
public int TestInt { get; set; } = 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是这Timer似乎在大约一分钟后停止工作.
如果我重写它使用一个Thread而不是它继续工作.所以它似乎真的是停止的计时器.
有没有人知道为什么会这样?
当我以编程方式调用Timer1_Tick(null,null)事件消息变空时?如何解决此问题OnMessageReceieve在事件触发时调用.
string message = string.Empty;
public void OnMessageReceieve(string message)
{
// I have a message in message variable
txtMessage.Text += message;
Timer1.Enabled = true;
Timer1_Tick(null, null);
// UpdatePanel1.Update();
}
protected void Timer1_Tick(object sender, EventArgs e)
{
//message variable gets empty here?
if (!string.IsNullOrEmpty(message))
{
txtMessage.Text += message;
}
}
Run Code Online (Sandbox Code Playgroud)