UIを持たないcommandline
呼び出しから呼び出すか、UIから呼び出すようにコードを最適化しようとしています。C#外部コードからフォームコントロールを更新するにはどうすればいいですか
問題は、フォームクラス内でworker-code
を呼び出すことができるということです。 ここでは、そのワーカーコードを別のクラスに引き出したいと思います。
私のニーズをより明確にするために、少量のサンプルを作ることができます:
public partial class form1 :Form
{
void AddLogmessage(String msg)
{
// update an listview
ListViewItem item = new ListViewItem();
item.Text = msg;
// Add the item to the ListView
LogView.Items.Add(item);
}
// button on ui to start working
private void btnStartTestRun_Click(object sender, EventArgs e)
{
try
{
DoSomeWork();
}
catch(Exception ex)
{}
}
private void DoSomeWork()
{
// do some really generic hard work....
AddLogMessage("working");
// do some more generic long lasting hard work....
AddLogMessage("working goes on...");
// in case of an error throw Exception
}
は、今私は(フォームクラス外で作業する作業員コードをrefcatorしたいのですが、UIに起こる事を報告することができますこのような(サーバーに結果を報告し、他のライブラリと通信)1がある場合)またはUIなしworkercodeを呼び出し、別のターゲットに他のreportingsを行う
何か:
public void AutomaticTaskHandler()
{
string[] cmdline = Environment.GetCommandLineArgs();
Arguments args = new Arguments(cmdline);
if (args["automatic"] != null)
{
doSomeWork();
}
}
この場合、メッセージをUIに報告する必要はありませんが、他のメッセージ(同じメッセージではありません!!)をサーバーに送信してください。
これは私がdoSomeWorkコードを2回書く必要がない最善の方法ですが、現在のシーンにあるメッセージのみを送信できるようにするにはどうすればよいですか?
私は約Delegates
とEvents
と考えていましたが、私はこの作業を行うためにこれに慣れていません。
ご協力いただければ幸いです。
おかげMeister_Schnitzel