繁体   English   中英

将自定义对象传递给Progress Changed方法。 C#

[英]Passing Custom Object to Progress Changed method. C#

我是C#创业的初期,因此,如果这是一个简单的问题,我深表歉意。 我一直在寻找答案,但找不到任何东西。

基本上,我试图将自定义对象从后台工作线程传递给进度更改的方法,以便可以更新一些标签和富文本框。 我知道使用report progress方法可以传递一个int和一个对象。 但是,当我这样做时,它不允许我在bw_progressChanged方法中访问它。

这是我的代码的一些片段-

Bacgkround工人

private void bw_DoWork(object sender, DoWorkEventArgs e)
{
     BackgroundWorker worker = sender as BackgroundWorker;
     UserStateSettings user = new UserStateSettings();

     user.rtbText = "Text";

     worker.ReportProgress(0, user);         



     if ((worker.CancellationPending == true))
     {
         e.Cancel = true;

     }
     else
     { .....}
 }

UserStateSettings类

 public class UserStateSettings
 {
      string _rtbText;
      int _productsProcessed;

      public string rtbText
      {
          get
          {
            return _rtbText;
          }
          set
          {
            _rtbText = value;
          }
      }

Bw_ProgressChanged (我正在尝试将对象属性rtbtext放入此处的RTF文本框中,但它根本不会让我。)

 private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
 {
     this.richTextBox1.Text = ....

     this.Refresh();
 }

希望这是有道理的,如果有人能阐明一点,我将不胜感激!

您应该能够从e.UserState属性中拉出对象。 您需要将其强制转换为您的类型才能使用它。

User user = e.UserState as User;
if (user != null) {
   // populate ui fields
}

参见https://msdn.microsoft.com/zh-cn/library/system.componentmodel.progresschangedeventargs.userstate(v=vs.110).aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM