あなたの編集を1として、あなたが他のアセンブリ内のコードに変更を加えることができます説明し、私は私がする部分だアプローチのために行くお勧めします:もちろん
// This would be in the external assembly
public MyReturnValue ProcessFile(Action<double> progressDelegate)
{
foreach(var line in file)
{
progressDelegate?.Invoke(myCalculatedProgress)
}
}
// This would be in the app
var progDelegate = new Action<double>((progress) => ViewModel.Progress = progress);
ExternalLibrary.ProcessFile(progDelegate);
、これは私すぐにちょうど何かであります一緒に投げて、あなたのプロジェクトに適応する必要がありますが、これは私がかなり大きなWPFプロジェクトで以前の雇用主で使用していたものであり、かなりうまく機能しました。
アップデートをUIスレッドにディスパッチするなどの通常の疑いのあるものはすべて処理する必要がありますが、それはすべてかなり標準的です。
また、IProgressインターフェイスを使用して、実際のオブジェクトの周りを渡して、これらのことを報告していました。これは特に、私たちが使用したグローバルIProgressスコープに何かが呼び出されたときにモーダルダイアログを表示するために使用されました。
どのように外部のアセンブリは、その進捗状況を報告しますか? – Clint
@Clintそれはまだ、私はどのようにUI側にそれを伝えるか分からない。私はそれを計算することができますが、その後の値をどうしたらいいのかわかりません。 – erotavlas