問題タブ [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.
c# - C# Windows アプリケーションのメイン プログラムで現在のスレッド アパートメントを STA に設定できない
Visual Studio 2010 で小さな Windows アプリケーション プロジェクトを作成しましたが、メイン スレッドのアパートメント プロパティを STA に設定できません。プロパティ[STAThread]
または[STAThreadAttribute]
メイン メソッドでも、デフォルトで MTA に設定されています。これにより、フォームを表示してそのコントロール プロパティを変更すると、例外が発生します。
これは、メイン スレッドApartmentSate
プロパティの値を表示し、それを STA に変更しようとするアプリケーション エントリ ポイントのスクリーンショットです (私のアプリケーションではこれを行いません。誰かが変更を提案した場合に何が起こるかを示すためだけです)。それはプログラム的に):
以下は、デバッグ セクションのアプリケーション プロパティのスクリーンショットです。
メインスレ離れてないから分からん この問題の原因と解決方法を教えてください。
編集:「Visual Studio ホスティング プロセスを有効にする」オプションを無効にすると、ApartmentSate
プロパティは正しく STA に設定されます。問題を回避する最善の方法ですか、それともより良い解決策でこれを修正できますか?
ありがとうございました
c++ - 現在のスレッドの COM アパートメントの状態を照会する方法
.NET Thread クラスには、スレッドのコンテキストのアパートメントを返す便利な関数 GetApartmentState() があります。ネイティブ コード (C++、C) 用の同様のCo<something-something>関数はありますか? ほぼ 10 年間 COM をプログラミングしてきたので、知っておくべきだと思いますが、答えが見つかりません。
c# - C# Application.Run() を使用するスレッドをシャットダウンする
コードにアクセスできる C# DLL を使用しようとしていますが、実際にコードを変更してカスタム バージョンをビルドすることはできません。呼び出しコードは C# WinForms プロジェクトであり、C# DLL も WinForms を使用して Windows システム イベントを処理します。問題は、DLL がバックグラウンド スレッドを使用してその内部で Application.Run() を使用し、そのスレッドを強制終了または停止する組み込みの方法があることです。コードのスニペットを次に示します。
どうやらそれを殺すことが期待される方法は、Application.Exit() を使用することですが、それは自分の WinForms プロジェクトも終了します。これは私が望んでいることではありません。Application.Exit() を呼び出さずにアプリケーションを閉じると、DLL はバックグラウンドで実行され続けます。DllClass オブジェクトをインスタンス化して使用し、完了したらシャットダウンできるようにしたいと考えています。実行中のスレッドの Thread オブジェクトを取得するメソッドを思いつきましたが、それに対して Thread.Abort() を呼び出しても、実際にはスレッドが強制終了されません。DLL の外部から Application.Run() 呼び出しを強制的に中止する方法はありますか?
c# - SetApartmentState の ArgumentOutOfRangeException
私はそのようなコードを持っています:
ArgumentOutOfRangeException
そして、2行目に例外が発生したら。それはどのように可能ですか?また、後で再発しないようにするにはどうすればよいですか?
前もって感謝します!
c# - ASP.Net WebApi STA モード
この投稿により、WebApi が STA モードで実行できなくなります。しかし、この投稿も2歳です。
MessageHandlers
私は新しい WebApi2 を掘り下げてきましたが、STA モードで実行する方法が見つからないようです。
WebApi または WebApi2 を STA モードで実行する方法を見つけた人はいますか?
c# - 並列 Foreach が ApartmentState 例外をスローする
事前定義されたリストにタブページを作成するための次のコードがあります。
次の例外が発生します。
現在のスレッドがシングル スレッド アパートメントにないため、インスタンス化できません。
アパートメントの状態を STA に設定する正しい方法は何ですか?
c# - Windows フォームの STAThread 要件
私の知る限り、すべての Windows フォーム アプリケーションは、メソッドの[STAThread]
上にディレクティブを設定する必要があります。Main()
ただし、例外があります。Compact Framework を使用して、Windows Mobile デバイス用のアプリケーションを作成しています。[STAThread]
コンパクト フレームワークはディレクティブさえサポートしていません[MTAThread]
。それでも、そこで問題に遭遇したことはありません。
ここで、さらに一歩進めると、本格的な Windows システムで Compact Framework アプリケーションを実行することもできます。その場合、本格的な .NET フレームワークが使用されると思います。
その時点でMTA
、本格的な Windows システムで Windows フォームを使用するアパートメント状態でコードを実行しています。これは、コンパクトなフレームワーク アプリケーションが本格的な Windows オペレーティング システムで実行されている場合、[STAThread]
ディレクティブの欠落について文句を言わないのはなぜですか?
c# - c# から実行している PowerShell コードの実行空間を設定するにはどうすればよいですか?
いくつかの Powershell スクリプトを実行するアプリがあります。(これは基本的に、SQL データベースに格納されている PS スクリプトを取り出して実行するラッパー アプリケーションです。)
追加した Powershell スクリプトの 1 つが現在失敗しています。これは、STA アパートメント状態で実行する必要があるためだと感じています。しかし、C#でアパートメントステートを設定する方法がわかりません。
私が使用している関数は次のとおりです。
スクリプトを STA モードで実行するように設定するにはどうすればよいですか?