0

バックグラウンドワーカーを使用していますが、クロススレッドの問題があると思います..しかし、解決できません。

私のコードはここにあります

  private void bgworkerGameLoad_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
    {
        var arg = e.Argument.ToString();
        var liste = webHelper.ShowGame("http://www.abx.com/" + arg);

        txtHowToPlay.Invoke(new Action(() => txtHowToPlay.Text = String.Format("Oyun Bilgi: {0}", liste[0])));

        txtInfo.Invoke(new Action(() => txtInfo.Text = String.Format("Nasıl Oynanır: {0}", liste[1])));

       bgworkerGameLoad.ReportProgress(0,liste[2]);

    }

   private void bgworkerGameLoad_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
    {


        if (FlashPlayerActive)
            UnLoad();
        string url="";
        Invoke(new MethodInvoker(() =>
            {
                url= e.UserState.ToString();
            Thread.Sleep(2);
        }));

        axShockwaveFlash1.Movie = url;

        LoadFlash();

        pbWaitForChannelLoading.Visible = false;
        axShockwaveFlash1.Play();
    }

問題は、shocwaveplayer の e.UserState.ToString() を取得できないことです。ローカル文字列変数を使用しましたが、結果は同じです。

program.csで対象の呼び出し例外が発生する

     Application.Run(new FrmMain());;

しかし、そのコードはfrmMain.csにあります

これは例外の詳細です

System.Reflection.TargetInvocationException が処理されませんでした Message=Exception が呼び出しのターゲットによってスローされました。ソース = mscorlib StackTrace: System.RuntimeMethodHandle._InvokeMethodFast (オブジェクト ターゲット、Object[] 引数、SignatureStruct& sig、MethodAttributes methodAttributes、RuntimeTypeHandle typeOwner) で System.RuntimeMethodHandle.InvokeMethodFast (オブジェクト ターゲット、Object[] 引数、シグネチャ sig、MethodAttributes methodAttributes、 System.Reflection.RuntimeMethodInfo.Invoke の RuntimeTypeHandle typeOwner) (Object obj、BindingFlags invokeAttr、バインダー バインダー、Object[] パラメーター、CultureInfo カルチャ、Boolean skipVisibilityChecks) System.Delegate.DynamicInvokeImpl(Object[] args) の System.Windows.Forms 。コントロール。Program.Main() in c:\Users..............\Program.cs:line 23 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain .ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) で Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() で System.Threading.ThreadHelper.ThreadStart_Context(オブジェクト状態) で System.Threading.ExecutionContext.Run(ExecutionContext executionContext, System.Threading.ThreadHelper.ThreadStart() InnerException: System.NullReferenceException メッセージ = オブジェクト参照がオブジェクトのインスタンスに設定されていません。ソース = System.Windows.Forms StackTrace: System.Windows.Forms.Control.MarshaledInvoke (コントロールの呼び出し元、デリゲート メソッド、

私の間違いは何ですか?デリゲートを使用しようとしましたが、同じです..

4

2 に答える 2