Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应用程序是否正常工作_C#_.net_Wpf_Winforms - Fatal编程技术网

C# 应用程序是否正常工作

C# 应用程序是否正常工作,c#,.net,wpf,winforms,C#,.net,Wpf,Winforms,我如何知道应用程序是否正在工作或处理某些内容?假设我正试图将大量数据写入文件,此时应用程序没有响应。我想知道应用程序的当前状态。使用componenet在后台线程中处理大量数据。通过事件通知用户进度 样本: public partial class Form1 : Form { public Form1() { InitializeComponent(); backgroundWorker1.WorkerReportsProgress = true

我如何知道应用程序是否正在工作或处理某些内容?假设我正试图将大量数据写入文件,此时应用程序没有响应。我想知道应用程序的当前状态。

使用componenet在后台线程中处理大量数据。通过事件通知用户进度

样本:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        backgroundWorker1.WorkerReportsProgress = true;
    }

    private void WriteDataButton_Click(object sender, EventArgs e)
    {
        backgroundWorker1.RunWorkerAsync();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
         for (int i = 1; i <= numberOfIterations; i++)
         {
             // write part of data
             backgroundWorker1.ReportProgress(i * 100 / numberOfIterations);
         }    
    }

    // This event handler updates the progress. 
    private void backgroundWorker1_ProgressChanged(
                object sender, ProgressChangedEventArgs e)
    {
        progressBar1.Value = e.ProgressPercentage;
    }

    // This event handler deals with the results of the background operation. 
    private void backgroundWorker1_RunWorkerCompleted(
                object sender, RunWorkerCompletedEventArgs e)
    {
        MessageBox.Show("Huge data was written");
    }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
backgroundWorker1.WorkerReportsProgress=true;
}
私有无效写入选项卡单击(对象发送者,事件参数e)
{
backgroundWorker1.RunWorkerAsync();
}
私有void backgroundWorker1\u DoWork(对象发送方,DoWorkEventArgs e)
{
对于(inti=1;i使用componenet在后台线程中处理大量数据。通过事件通知用户进度

样本:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        backgroundWorker1.WorkerReportsProgress = true;
    }

    private void WriteDataButton_Click(object sender, EventArgs e)
    {
        backgroundWorker1.RunWorkerAsync();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
         for (int i = 1; i <= numberOfIterations; i++)
         {
             // write part of data
             backgroundWorker1.ReportProgress(i * 100 / numberOfIterations);
         }    
    }

    // This event handler updates the progress. 
    private void backgroundWorker1_ProgressChanged(
                object sender, ProgressChangedEventArgs e)
    {
        progressBar1.Value = e.ProgressPercentage;
    }

    // This event handler deals with the results of the background operation. 
    private void backgroundWorker1_RunWorkerCompleted(
                object sender, RunWorkerCompletedEventArgs e)
    {
        MessageBox.Show("Huge data was written");
    }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
backgroundWorker1.WorkerReportsProgress=true;
}
私有无效写入选项卡单击(对象发送者,事件参数e)
{
backgroundWorker1.RunWorkerAsync();
}
私有void backgroundWorker1\u DoWork(对象发送方,DoWorkEventArgs e)
{

(inti=1;谢谢你的回复。你帮了我很多。@user1567051没问题:)我更新了一点示例。顺便说一句,您可以将backgroundWorker从工具箱拖到表单中,并从designer订阅事件。谢谢您的回复。您帮了我很多。;@user1567051没问题:)我更新了一点示例。顺便说一句,您可以将backgroundWorker从工具箱拖到表单中,并从designer订阅事件。您可以n应该是多线程的,并提供自己的反馈。否则就没有任何真正的方法。如果GUI线程挂起,那么即使是windows也可能会将应用程序误认为“没有响应”你的应用程序应该是多线程的,并提供自己的反馈。否则就没有真正的方法。如果GUI线程挂起,那么即使是windows也可能会将应用程序误认为“没有响应”