Thread を簡単に使う。

引数取れないしめんどいよねっていう何か。

class ThreadHelper {
  private readonly Delegate _execute;
  private readonly Delegate _callback;
  private object[] _args;

  public ThreadHelper ( Delegate execute )
    : this( execute, null ) {
  }

  public ThreadHelper ( Delegate execute, Delegate callback ) {
    _execute = execute;
    _callback = callback;
  }

  public void Invoke( params object[] args ) {
    _args = args;
    Thread thread = new Thread( Execute );
    thread.Start();
  }

  void Execute() {
    if (_callback.Method.GetParameters().Length != 0) {
      _callback.DynamicInvoke( result );
    } else {
      _callback.DynamicInvoke();
    }
  }
}

使い方。

void ExecuteThread() {
  ThreadHelper<string> helper = new ThreadHelper<string>(
    new Func<string, string>( Target ), mes => MessageBox.Show( mes ) );
  helper.Invoke( "message" );
}

string Target (string source) {
  //なんか処理
  return source.ToUpper();
}