C# 如何给从数据库获取时间给datetime赋值
我的目的是要获取某一时刻到现在的时间间隔,下面这段代码可以实现这个功能,但是放到线程里,可能因为DateTimePicker为窗体控件,线程不能执行出结果,我想datet...
我的目的是要获取某一时刻到现在的时间间隔,下面这段代码可以实现这个功能,但是放到线程里,可能因为 DateTimePicker 为窗体控件,线程不能执行出结果,我想datetime应该可以在线程里面用,但不知道怎么给datetim 赋值 ,或者有什么更好的办法,
//获取时间间隔
DateTimePicker dtp = new DateTimePicker();
dtp.Text = Convert.ToString(dt.Rows[i]["fReceiveTime"]);
TimeSpan ts = new TimeSpan();
ts = DateTime.Now - dtp.Value; //获取时间间隔
int TSTS = Convert.ToInt32(ts.TotalSeconds); //转换时间间隔为 秒 展开
//获取时间间隔
DateTimePicker dtp = new DateTimePicker();
dtp.Text = Convert.ToString(dt.Rows[i]["fReceiveTime"]);
TimeSpan ts = new TimeSpan();
ts = DateTime.Now - dtp.Value; //获取时间间隔
int TSTS = Convert.ToInt32(ts.TotalSeconds); //转换时间间隔为 秒 展开
2个回答
展开全部
窗体控件都运行在UI线程中,只能由UI线程本身执行,如果在多线程中设置控件的内容,就会被视为不安全的代码,报出异常。具体解决方法就是在窗体构造函数中禁止跨线程安全检测访问。
public Form1
{
InitialComponents();
CheckForIllegalCrossThreadCalls = false;
}
public Form1
{
InitialComponents();
CheckForIllegalCrossThreadCalls = false;
}
追问
还是不行,上面我的代码放在backgroundWorker 执行到上面的代码,线程就不再往下了,无论用没用CheckForIllegalCrossThreadCalls = false;
都没有报错。在线程里要计算时间间隔,应该怎么做呢?就是能代替我那段代码的代码?我用DateTimePicker 是因为它有个text属性方便给它赋值,并方便计算时间间隔。但是它属于窗体控件,线程里不管用了,
追答
DateTime dbTime = Convert.ToDateTime(dt.Rows[i]["fReceiveTime"]);
TimeSpan ts = DateTime.Now - dbTime; //获取时间间隔
int TSTS = Convert.ToInt32(ts.TotalSeconds); //转换时间间隔为 秒
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询