gpt4 book ai didi

c# - 如何自动执行使用 web 服务的任务

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:10 25 4
gpt4 key购买 nike

我有一个 winform 应用程序,它需要使用一个网络服务。 Web 服务检查数据库中的任何更改。如果数据库中有任何更改,则应通知 winform 应用程序并将相应地执行一些任务。我该怎么做?

我想在我的 winform 应用程序中使用计时器,然后每隔 5 分钟连接到一个 Web 服务并检查数据库中是否有新的更改。还有其他办法吗?

更新:

我根据答案在这里发布代码:

类 PerformTasks {

    public static bool checkIfInProgress { get; set; }

public static void InitializeWebService()
{
try
{
Timer = new System.Timers.Timer(2000);
Timer.Elapsed += OnTimedEvent;
Timer.Enabled = true;
}
}

private static void callService()
{
using (var service = new WebServiceSoapClient())
{
checkIfInProgress = true;
task1();
task2();
popMessage();
checkIfInProgress = false;
}
}

private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
if (checkIfInProgress == false)
{
callService();
}
}

private static void PpopMessage()
{
var form = new Form
{
StartPosition = FormStartPosition.Manual,
ShowInTaskbar = false,
Text = "Message",
Size = new Size(500, 200),
};
var screen = Screen.FromPoint(form.Location);
Label lblText = new Label();
lblText.Text ="Test Text";
lblText.Dock = DockStyle.Fill;
lblText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
form.MaximizeBox = false;

form.Controls.Add(lblText);
form.Location = new Point(screen.WorkingArea.Right - form.Width, screen.WorkingArea.Bottom - form.Height);
form.Show();
}

现在一切正常,除了 1 个任务,即 popMessage(顶部的代码片段)。 此处表单已打开,但似乎一直在加载。在使用 times 之前它曾经工作正常。我该如何处理?

最佳答案

这是唯一的方法,尤其是当 Web 服务不是基于 WCF 或者您无力修改它时。

如果您使用计时器,请确保您使用 System.Timers.Timer 并按照说明进行操作 here以便 Elapsed 处理程序在 UI 线程上执行。此外,当计时器滴答作响时,您可能应该生成一个工作线程(或任务,或在异步方法上等待)来进行服务调用。您不希望您的 UI 在服务调用过程中被阻塞。

如果您可以控制 Web 服务,那么您可能想要探索 WCF Duplex Services ,它允许您从服务中回调客户端。

关于c# - 如何自动执行使用 web 服务的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24951542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com