如何通过计时器每10秒执行一次以下的功能? [英] How to execute function below every 10 second by timer ?

查看:440
本文介绍了如何通过计时器每10秒执行一次以下的功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题

我需要使用定时器控件每10秒执行一次函数检索图像



i已经将计时器控件放在Windows窗体上,但如何运行并执行此功能


$ 10 $ b定时器每10秒钟。



意味着我需要每隔10秒刷新并执行下面的功能



我在windows上使用csharp visual studio 2017 with sql server 2012



我尝试过:



Problem
I need to execute function retrieve image every 10 second by using timer control

i already put timer control on windows form but how to run and execute this function

in timer every 10 second .

meaning i need every 10 second refresh and executing function below

I work on windows form csharp visual studio 2017 with sql server 2012

What I have tried:

public void GetMembersData()
      {
           string sqlGetLast = @"select isnull((select top 1 MemberCode from members order by MemberCode desc),1) ";
           int MemberCode = Utilities.ObjectConverter.ConvertToInteger(DataAccess.ExecuteScalar(sqlGetLast));
           string sqlImage = "select MemberImage FROM Members WHERE MemberCode =" + MemberCode + "";
           if (Utilities.ObjectConverter.ConvertToString(DataAccess.ExecuteScalar(sqlImage)) != "")
           {
               byte[] MemberImage = (byte[])DataAccess.ExecuteScalar(sqlImage);
               pictureBox1.Image = ByteArrayToImagebyMemoryStream(MemberImage);
           }
       }

推荐答案

将计时器间隔设置为10秒:10000

处理Timer Tick事件

启动计时器。

在tick处理程序中,调用你的方法。
Set the timer Interval to 10 seconds: 10000
Handle the Timer Tick event
Start the timer.
In the tick handler, call your method.


解决方案#1由 OriginalGriff [ ^ ]非常好,详细解释了如何使用计时器。



我想把你的注意力集中在这些事情上:

1)可能 Sql Injection [ ^ ]

永远不要使用这样的命令:

Solution #1 by OriginalGriff[^] is excellent and explains in details how to use timer.

I wanted to move your focus to these things:
1) possible Sql Injection[^]
Never use commands like this:
string sqlImage = "select MemberImage FROM Members WHERE MemberCode =" + MemberCode + "";



而不是这个,使用参数化查询!请参阅:如何:执行参数化查询Microsoft Docs [ ^ ]

例如:


Instead of this, use parameterized queries! See: How to: Execute a Parameterized Query | Microsoft Docs[^]
For example:

string sConStr = @"your_connection_string_here!";
DataTable dt = new DataTable();

//1. create SqlConnection
using(SqlConnection connection  = new SqlConnection(sConStr))
{
    //open connection
    connection.Open()
    //set command text
    string sql = @"SELECT * FROM TableName WHERE TextField Like @SomeString;";
    //2. create command
    using (SqlCommand command = new SqlCommand(sql, connection))
    {
        command.Parameters.AddWithValue("@SomeString", "%whatever%")
        //3. create reader
        using (SqlDataReader reader = command.ExecuteReader())
        {
            //4. load data into datatable
            dt.Load(reader)
        }
    }
}





2)不必要的数据库调用

我很确定你想检查 MemberImage 已更改。如果我是对的,我建议使用 SqlDependency类(System.Data.SqlClient)| Microsoft Docs [ ^ ]



详情请见:

使用SqlDependency检测更改Microsoft Docs [ ^ ]

使用SqlDependency进行数据更改事件 [ ^ ]

使用SqlDependency和SqlCacheDependency查询通知 [ ^ ]



2) unnecessary database calls
I'm pretty sure that you want to check if MemberImage has been changed. If i'm right, i'd suggest to use SqlDependency Class (System.Data.SqlClient) | Microsoft Docs[^]

For further details, please see:
Detecting Changes with SqlDependency | Microsoft Docs[^]
Using SqlDependency for data change events[^]
Query Notification using SqlDependency and SqlCacheDependency[^]


这篇关于如何通过计时器每10秒执行一次以下的功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆