没有附加事件处理程序的背景工作者

时间:2016-11-02 08:06:45

标签: c#

我正在向我的dll添加一个后台工作进程,以便将进度报告给gui。我有以下问题

我收到以下错误信息:

  

严重级代码描述项目文件行抑制状态   错误CS0120非静态字段,方法或属性'Program.slate_ExportReportProgress(object,SlateExportContext.ProgressArgs)'SlateExportApiTest C:\ Projects \ fhsslateexport \ SlateExportApiTest \ Program.cs 24 Active

需要对象引用

这是我的实施

//update the progress to the client 

public EventHandler<ProgressArgs> ReportProgress;

// Eventargs to contain information to send to the subscriber
public class ProgressArgs : EventArgs
{
    public int Percentage { get; set; }
    public string Message { get; set; }
}

public void TransferToSlateBackground()
{
    var worker = new BackgroundWorker();
    worker.DoWork += DTOBackGroundWorker;
    worker.ProgressChanged += worker_ProgressChanged;
    worker.RunWorkerCompleted += WorkDone;
    worker.RunWorkerAsync("input");
}

public void DTOBackGroundWorker(object sender, DoWorkEventArgs e)
{
    e.Result = e.Argument.Equals("input");
    DTOCaseObject();
}

private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
}

public void WorkDone(object sender, RunWorkerCompletedEventArgs e)
{
    var result = (bool)e.Result;
}

引发ReportProgress事件的代码是:

int step = 100 / CaseAssets.Count();
int i = 0;

// Report progress if somebody is listening (subscribed)
if (ReportProgress != null)
{
    ReportProgress(this, new ProgressArgs { Percentage = i, Message = "Exporting to Slate   " + caseid.ToString() });
}

但是当我从gui / console app调用代码时,我遇到了问题。

这里我连接了我的事件处理程序

_slateExport.ReportProgress += slate_ExportReportProgress;

public void slate_ExportReportProgress(object sender, ProgressArgs e)
{
}

但我收到上面的错误

修改2

我不相信这是我遇到的问题的主要问题是事件不是属性或表单控件

0 个答案:

没有答案