C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[1]: VB.Net 非同期処理について
(過去ログ 170 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 4 記事 (1 - 4 表示)] <<
0
>>
■98151
/ inTopicNo.1)
VB.Net 非同期処理について
▼
■
□投稿者/ RS
(28回)-(2021/09/29(Wed) 16:29:39)
分類:[.NET 全般]
VB.Netでの非同期処理について質問です。
戻り値と引数のある関数を非同期で動かしたいのですが、
この処理内で、ダイアログを表示しています。
Thread.SetApartmentStateを設定すればエラーが回避できるとのことで
調べていたのですが、Taskには設定できないようで、困っています。
戻り値と引数のある関数を非同期で、かつThread.SetApartmentStateを設定して
動かすことはできるのでしょうか?
フレームワークは4.5.2です。
ご存知の方がいらっしゃいましたら、ご教授お願いいたします。
引用返信
編集キー/
編集
■98152
/ inTopicNo.2)
Re[1]: VB.Net 非同期処理について
▲
▼
■
□投稿者/ WebSurfer
(2353回)-(2021/09/29(Wed) 16:58:02)
■
No98151
(RS さん) に返信
何を作っているのですか? WinForms? WPF?
> この処理内で、ダイアログを表示しています。
ダイアログって何ですか?
簡単なサンプルで良いので作ってアップして何が問題か
説明してください。
引用返信
編集キー/
編集
■98153
/ inTopicNo.3)
Re[2]: VB.Net 非同期処理について
▲
▼
■
□投稿者/ RS
(29回)-(2021/09/29(Wed) 17:14:48)
■
No98152
(WebSurfer さん) に返信
> ■
No98151
(RS さん) に返信
>
> 何を作っているのですか? WinForms? WPF?
>
>>この処理内で、ダイアログを表示しています。
>
> ダイアログって何ですか?
>
> 簡単なサンプルで良いので作ってアップして何が問題か
> 説明してください。
作っているのはWinFormsです。
ファイルの保存ダイアログを表示しています。
以下、サンプルとなります。
Dim result As Boolean = Await Task.Run(Function() CreateExcel(String型変数))
If result = False Then
Throw New Exception
End If
非同期で動かしたいのはCreateExcelに記載されています。
CreateExcelは、String型の引数を受け取って、処理結果をBooleanで返しています。
CreateExcelの中で、ファイルの保存ダイアログを表示しています。
上記サンプルのまま実行すると、以下のエラーになります。
OLE が呼び出される前に、現在のスレッドが Single Thread Apartment (STA) モードに設定されていなければなりません。Main 関数に STAThreadAttribute が設定されていることを確認してください。 この例外はデバッガーがプロセスにアタッチされている場合にのみ発生します。
エラー内容を調べていたところ、SetApartmentStateの設定が必要とのことでしたので
質問した次第です。
よろしくお願いします。
引用返信
編集キー/
編集
■98154
/ inTopicNo.4)
Re[1]: VB.Net 非同期処理について
▲
▼
■
□投稿者/ Azulean
(1204回)-(2021/09/29(Wed) 20:11:35)
■
No98151
(RS さん) に返信
> 戻り値と引数のある関数を非同期で動かしたいのですが、
> この処理内で、ダイアログを表示しています。
>
> Thread.SetApartmentStateを設定すればエラーが回避できるとのことで
> 調べていたのですが、Taskには設定できないようで、困っています。
> 戻り値と引数のある関数を非同期で、かつThread.SetApartmentStateを設定して
> 動かすことはできるのでしょうか?
できません。
Task の利用は諦めて、自前で STA スレッドを作って実行するなら可能かもしれませんが、やめておいた方が良い気もします。
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-