如何通过计时器每10秒执行一次以下的功能? [英] How to execute function below every 10 second by timer ?
问题描述
问题
我需要使用定时器控件每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屋!