私のdllでは、次のようなイベントを公開しています。
public delegate void LogMsgEventHandler(object sender, LogEventArgs e);
public event LogMsgEventHandler newLogMessage;
public class LogEventArgs : EventArgs
{
public string logMsg;
}
protected virtual void OnChanged(LogEventArgs e)
{
if (newLogMessage != null)
newLogMessage(this, e);
}
さまざまなメソッドがイベントを発生させて、操作の詳細をログに記録します。dllを使用するメインフォームで、ログメッセージをリストボックスに出力します。
slotUtil.newLogMessage += new slotUtils.LogMsgEventHandler(slotUtil_newLogMessage);
..
void slotUtil_newLogMessage(object sender, slotUtils.LogEventArgs e)
{
lbDebug.Items.Add(e.logMsg);
}
問題は、ロギングイベントの発生が速すぎると、フォームがフリーズすることです。これは糸脱毛の問題だと思いますか?フォームが流動的に更新されるこのデザインを修正するにはどうすればよいですか?これは悪いデザインですか?私の代替デザインIDは、すべてのログをdllのプライベート文字列に格納し、特定のメソッドが呼び出されたときにのみログをダンプするというものでした。考え?
ありがとう!