gpt4 book ai didi

winforms - 未知处理时间的进度条

转载 作者:行者123 更新时间:2023-12-03 05:19:37 24 4
gpt4 key购买 nike

我正在开发启动/停止/重新启动 Windows 服务的 winform(c#)。我想放置一个进度条,直到操作完成。我是 .net 编程新手。请帮助我实现这一目标。

最佳答案

当您不知道需要多长时间时,您就无法展示有意义的进展。您无法知道,服务启动需要 1 到 30 秒。您所能做的就是向用户显示“我没有死,正在努力”的指示符。 ProgressBar 支持,将 Style 属性设置为“Marquee”。

您还需要在工作线程中启动服务,以避免 UI 卡住。最好使用BackgroundWorker 来完成。使其看起来与此类似:

public partial class Form1 : Form {
public Form1() {
InitializeComponent();
ServiceProgressBar.Style = ProgressBarStyle.Marquee;
ServiceProgressBar.Visible = false;
}

private void StartButton_Click(object sender, EventArgs e) {
this.StartButton.Enabled = false;
this.ServiceProgressBar.Visible = true;
this.backgroundWorker1.RunWorkerAsync("foo");
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
var ctl = new ServiceController((string)e.Argument);
ctl.Start();
}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
this.StartButton.Enabled = true;
this.ServiceProgressBar.Visible = false;
if (e.Error != null) {
MessageBox.Show(e.Error.ToString(), "Could not start service");
}
}

关于winforms - 未知处理时间的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6356960/

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