問題タブ [apartment-state]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1401 参照

c# - Winforms:1つのCOMオブジェクトにはSTAThreadが必要で、もう1つのCOMオブジェクトにはMTAThreadが必要です。どうすれば使用できますか?

2つのCOMコンポーネントを使用してWinformsアプリケーションを構築しようとしています。ただし、コンポーネントの1つは使用時にのみ機能し、もう1つは。[MTAThread]でのみ機能し[STAThread]ます。

推奨される解決策は何でしょうか?

0 投票する
2 に答える
6189 参照

c# - 現在のスレッドのアパートメント状態を確認するには?

STA アパートメント状態で実行する必要がある関数があります。STAとして実行されているかどうかを確認したくありません。そうでない場合は、STAで実行される新しいスレッドを生成します。

現在のスレッドが実行されているアパートメントの状態を確認するにはどうすればよいですか?

0 投票する
2 に答える
3307 参照

.net - NUnitGUIランナーとアパートの状態

NUnit GUIランナーでアパートの状態をどのように設定しますか?WatiNを使用して単一のNUnitテストを実行しようとすると、次のメッセージが表示されます。

MyNamespace.LoginTests.CanLogin:
System.Threading.ThreadStateException:Internet Explorerを自動化するには、CurrentThreadのApartmentStateをApartmentState.STAに設定する必要があります。

0 投票する
4 に答える
5380 参照

c# - 1 つのプロセス内で共存できる 'STA' スレッドの数はいくつですか?

一部のコンポーネントSTAを使用するには、ASP.NET アプリケーション内で複数のスレッドが必要です。COM

各プロセス内のどこかを読みましたが、STA存在できるスレッドは1つだけです。サンプル プロジェクトをコーディングし、多くのスレッドを作成し、それらのアパートメントの状態を に設定するSTAと、COM例外なくオブジェクトを操作できます。

プロセス内に多くのSTAスレッドを持つことは可能ですか?

0 投票する
1 に答える
314 参照

.net - デリゲートをBeginInvokeするスレッドの性質を変更できますか?

BeginSomething()私はとEndSomething()のペアを持つインターフェースを実装しています、そして私の実装はメソッドにありますExecute()

そこで、を作成し、 BeginSomethingとEndSomethingAction action = Executeを呼び出します。ただし、私のExecuteメソッドは、アパートメントの状態がSTA(シングルスレッドアパートメント)であるスレッドによって呼び出される必要があります。通常、これはを呼び出すことによって行われますが、この場合、どのスレッドが自分のメソッドを呼び出すのかわかりません。action.BeginInvokeaction.EndInvokeThread.SetApartmentState

呼び出し元のスレッドをSTAにするにはどうすればよいですか?

0 投票する
1 に答える
8646 参照

activex - スレッドがシングルスレッド アパートメントにあるため、ActiveX コントロールをインスタンス化できません。PC をスリープから復帰させた後に発生する

私は、通話の発着信時にブラウザー ウィンドウ (ExtendedWebBrowser) を開く VOIP クライアント (ウィンドウのフォーム) に取り組んでいます。通常は正常に動作しますが、コンピューターがスリープ モードになってから復帰すると、プログラムは次のエラーでクラッシュします。

コードで開始されたスレッドを設定しようとしましたthread.SetApartmentState(ApartmentState.STA)が、同じ結果が得られます。[STAThread]また、関数の前に持っていmain()ます。今、コンピューターがスリープ状態になったときにスレッドが正しく終了しないことにもっと関係があるのではないかと思っていますが、よくわかりません。私のバックグラウンドは C++ と DirectX です。これは私が取り組んだ最初の Windows フォームなので、助けていただければ幸いです。

フォローアップ:プログラムを再開した後、メイン スレッドではなくワーカー スレッドで開始されていることを発見した後、この問題を解決することができました。詳細については、こちらを参照してください:スリープ (サスペンド) および Windows フォームの再開は、メイン スレッドではなくワーカー スレッドでプログラムを開始します。

0 投票する
1 に答える
310 参照

c# - インプロセス COM サーバーへの LoaderOptimization の適用

.NET インプロセス COM サーバーに複数の AppDomains を作成する必要があります (これは Windows エクスプローラーの名前空間拡張です)。

私のテスト コンソール アプリケーションでは、40 秒で 10 個のドメイン + WPF ウィンドウを作成できましたが、これは受け入れられません。これを追加LoaderOptimization.MultiDomainHostすると、これが最大 2 ~ 5 秒短縮されますが、これは問題ありません。

ただし、MainCOM サーバーにはメソッドがなく、LoaderOptimization を指定してもAppDomainSetup2 つ以上の追加ドメインのロードにのみ影響します (つまり、最初の追加の AppDomain は 3 ~ 4 秒で開始し、その他は 0.1 ~ 0.3 秒で開始します)。

では、インプロセス COM サーバーを指定できますか? はいの場合、どのように指定できますか?LoaderOptimization

0 投票する
2 に答える
14444 参照

c# - 多くの UI コンポーネントがこの WPF を必要とするため、呼び出しスレッドは STA でなければなりません。

WPF Toolkitが提供する MessageBox を使用しています。そして、私はエラーが発生します

多くの UI コンポーネントがこれを必要とするため、呼び出しスレッドは STA でなければなりません。

この場合、ApartmentState を設定するにはどうすればよいですか

編集:WPF Toolkit の MessageBox コントロールを使用してモードレス MessageBox を表示しようとしています。これまでのところ、私が持っているコードは次のとおりです。

0 投票する
2 に答える
1059 参照

nunit - TeamCity SpecFlow NUnit Watin および ApartmentState STA

新しい teamcity サーバーで specflow ワチン テストを実行しようとしています。問題は、組み込みの nunit ランナーを取得して、appartmentstate STA でテストを実行できないことです。

以前にこの構成を使用しましたが、これは他のテストランナーと連携します。

しかし、TeamCity NUnit テスト ランナーは、この構成を認識していないようです。他の構成の健全性テストが実施されているため、テストランナーが少なくともテスト プロジェクトの構成を読み取ることがわかっています。

次のように RequiresSTA 属性を使用する代替手段があります。

しかし、NUnit テストは SpecFlow によって生成されるため、これらの属性の設定方法を制御することはできません。

このセットアップを機能させるにはどうすればよいですか?

0 投票する
1 に答える
488 参照

nunit - SpecFlow NUnit RequiresSTA 属性

SpecFlow で RequiresSTA 属性を使用して NUnit テストを生成する必要があります。どうやってやるの?