私はC#に少し慣れていないので、概念実証クライアント/サーバーアプリケーションを作成しています。現在、バックグラウンドワーカーを使用して、クラスからリストボックスを更新しようとしています。このようにして、基本的なロギングを提供できます。リストボックスを使用するだけでは最適ではないことを理解しています。
このコードに基づいて、クラスにイベントハンドラーを追加しました: BackgroundWorkerは外部クラスからの進行状況を報告しますか?
ただし、次のエラーが発生します。「メソッドグループ」であるため、「ReportProgress」に割り当てることができません。
関連する部分だけを表示するようにコードを削減しようとしました。また、前のクラスのコードを完全に実装していません。エラーの原因となっている欠落しているものを知りたいだけです。おそらく単純なことのように感じます。
Form1.cs
namespace V12
{
public partial class Form1 : Form
{
//Background Workers
private BackgroundWorker serverWorker = new BackgroundWorker();
public Form1()
{
InitializeComponent();
//Server Backgroundworker
serverWorker.WorkerReportsProgress = true;
serverWorker.ReportProgress += new EventHandler<Server.ProgressArgs>(serverWorker_ReportProgress); //Error on this line
serverWorker.DoWork += new DoWorkEventHandler(serverWorker_DoWork);
}
private void serverWorker_DoWork(object sender, DoWorkEventArgs e)
{
//my work is here
}
protected void serverWorker_ReportProgress(object sender, Server.ProgressArgs e)
{
serverWorker.ReportProgress(e.Percentage, e.Message);
}
}
Server.cs
namespace V12
{
public sealed class Server
{
//Allows for updating of control on the UI Thread
public EventHandler<ProgressArgs> ReportProgress;
// Eventargs to contain information to send to the subscriber
public class ProgressArgs : EventArgs
{
public int Percentage { get; set; }
public object Message { get; set; }
}
}