如何使用C#线程代替time控件的刷新卡死

有个功能需要做到时时访问数据库,每秒都要访问数据库获取最新的值,但是给time控件刷新10多次后会卡死,想要线程来实现,这个是C#winfrom项目,想请大家帮忙写个小案... 有个功能需要做到时时访问数据库,每秒都要访问数据库获取最新的值,但是给time控件刷新10多次后会卡死,想要线程来实现,这个是C#winfrom项目,想请大家帮忙写个小案例 展开
 我来答
玩转数据处理
2014-06-07 · 数据处理,Python,dotnet
玩转数据处理
采纳数:1613 获赞数:3794

向TA提问 私信TA
展开全部
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Thread refreshDatabase = new Thread(ReadDataFromDB.DoWork);
refreshDatabase.Start();
}

class ReadDataFromDB
{
static MySqlConnection con = new MySqlConnection("server=localhost;database=your db name;user id=root;password=");
static MySqlCommand cmd = new MySqlCommand("select now()", con);
public static void DoWork()
{
while (true)
{
if (con.State == ConnectionState.Closed)
{
try
{
con.Open();
}
catch (MySqlException ex)
{
Thread.CurrentThread.Abort();
Console.WriteLine(ex.ToString());
}
}
DateTime i = (DateTime)cmd.ExecuteScalar();
Console.WriteLine(i.ToString());
Thread.Sleep(1000);
}
}
}
}
追问

你好,如果我把输出的这句话Console.WriteLine(i.ToString());变成把值绑定到控件上,label1.Text = i.ToString();  这样的话会报错,请问怎么解决呢?

追答
用委托+事件可以跨线程访问控件的,具体使用方法你去MSDN或其他论坛博客找找教程看看吧,不难的,这东西不是一两句话就能让你明白的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哲事姓无
2014-06-07 · TA获得超过1176个赞
知道小有建树答主
回答量:903
采纳率:100%
帮助的人:442万
展开全部

        // 在界面启动是运行
        var thread = new Thread(UpdateValue);
        thread.IsBackground = true; // 设置为后台线程,这样不关闭线程也不会阻塞程序关闭了
        thread.Start();
        
        
    // 处理线程
    private void UpdateValue()
    {
        do
        {
            // 从数据库中读出数值
            var value = ReadValueFromDataBase();

            // 这里切换到界面线程设置值
            MethodInvoker invoker = () => textBox.Text = value;
            textBox.BeginInvoke(invoker);

            // 暂停一秒
            Thread.Sleep(1000);

        } while (true);
    }
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuxd7
2014-06-07 · TA获得超过323个赞
知道小有建树答主
回答量:452
采纳率:100%
帮助的人:285万
展开全部
每秒都访问数据库?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式