我有一个计时器,我想调用一个方法。有办法实现吗?
我在服务器端有一个计时器,当计时器结束时,我想向 sql 数据库内的所有成员添加点。
计时器
private async Task DoWorkAsync()
{
try
{
while (await _timer.WaitForNextTickAsync(_cts.Token))
{
// Here i want to call AddPointsToAllMembers();
}
}
catch (Exception ex) {
Console.WriteLine(ex.ToString());
}
}
我想调用的方法
// Adds points to all members
[HttpGet("members")]
public void AddPointsToAllMembers()
{
try
{
string conString = _configuration.GetConnectionString("MembershipApp");
MySqlConnection conn = new MySqlConnection(conString);
conn.Open();
string sqlCommand = "SELECT * FROM member";
MySqlCommand cmd = new MySqlCommand(sqlCommand, conn);
MySqlDataReader dReader = cmd.ExecuteReader();
while (dReader.Read())
{
SetPoints(50, (long)dReader[2]);
}
dReader.Close();
conn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
HttpClient
班。创建它的静态实例并使用 GetStringAsync
和完整的 url 向其发送请求。
在使用
DoWorkAsync
方法的类中:
private static readonly System.Net.HttpClient client = new();
// when you want to invoke the end point
string status = await client.GetStringAsync("http://[yourdomain].com/points/members");
我只是猜测你的控制器 url 和点的终点,根据需要更改它。
如果您关心端点的任何类型的状态/响应,您还可以从客户端获取返回字符串。