質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

1868閲覧

謎の例外対処について

Reindeer_Csharp

総合スコア13

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2022/11/17 08:32

編集2022/11/17 08:40

前提

深層学習ソフトを組み上げている途中です。
ビルドしている間に変な例外が出てしまって困っています。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • 例外の原因と対処法を確認する。

発生している問題・エラーメッセージ

System.OperationCanceledException HResult=0x8013153B Message=操作は取り消されました。 Source=mscorlib スタック トレース: 場所 System.Threading.CancellationToken.ThrowOperationCanceledException() (f:\dd\ndp\clr\src\BCL\system\threading\CancellationToken.cs):行 482

該当のソースコード

例外はこのコードの他にも多数確認しました。

C#

1static void CreateThread() 2 { 3 // Create a new background thread to run the work. 4 var t = new Thread(() => 5 { 6 // Repeatedly get the next item and invoke it, setting its TCS when we're done. 7 // This will wait for up to the idle time before giving up and exiting. 8 while (TryDequeue(out (Delegate action, object state, TaskCompletionSource<bool> tcs) item)) 9 { 10 try 11 { 12 if (item.action is Action<object> pts) 13 { 14 pts(item.state); 15 } 16 else 17 { 18 ((Action)item.action)();//ここで例外発生。 19 } 20 } 21 finally 22 { 23 item.tcs.SetResult(true); 24 } 25 } 26 }); 27 t.IsBackground = true; 28 t.Start(); 29 } 30

他DLL内での例外発生なので事前コードが必要...?
そもそもこの例外が大量に起きている時点でDLL自体がおかしい?

試したこと

DLLの再確認、再インストールなどを行いました。
といっても原因の詳細がなければどこを直せばいいのかわからずじまいです。

補足情報(FW/ツールのバージョンなど)

Windowsプラットフォーム(.net)
VisualStudio2022 C# 最新版

x64でのビルドです

###追記情報
2022/11/17 17:33 ビルド環境の追記をしました(x64)
2022/11/17 17:40 コード修正、追記を行いました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/11/17 22:32

質問者さん、無言ですが、回答したのでそれに対するフィードバックを返してください。役に立った/立たなかったぐらいはすぐに返せるのでは? 役に立たなかったならどこがダメかを書くとより期待に近い回答が出てくるかも。とにかく無言は NG です。
Reindeer_Csharp

2022/11/17 23:38

すみません、プロフィールにも書いてある通り仕事の都合上08:30~17:40までしか対応できないです。 説明不足で申し訳ございません。
退会済みユーザー

退会済みユーザー

2022/11/18 00:01

> 仕事の都合上08:30~17:40までしか対応できないです。 失礼しました。プロフィールは見てませんでした。質問欄にも書いていただけると有難いです。
guest

回答2

0

ベストアンサー

例外の OperationCanceledException とコードのコメント "This will wait for up to the idle time before giving up and exiting" から想像するに、the idle time が過ぎたので OperationCanceledException をスローして処理を中断したのだと思います。

ちなみに、コードのコメント "setting its TCS" の TCS とは CancellationTokenSource オブジェクトのことでしょう。

CancellationTokenSource クラス
https://learn.microsoft.com/ja-jp/dotnet/api/system.threading.cancellationtokensource?view=netframework-4.8

以下のコードは cts.CancelAfter(5000); でタイムアウトを 5 秒に設定していて、5 秒待っても処理が終わらなかったら OperationCanceledException が自動的にスローされるのでそれでキャンセルしています。似たような話だと思います。

C#

1public async Task<ActionResult> VerifyName(string name) 2{ 3 try 4 { 5 using (var cts = new CancellationTokenSource()) 6 { 7 // 5 秒でタイムアウトに設定 8 cts.CancelAfter(5000); 9 CancellationToken token = cts.Token; 10 11 Products product = await db.Products 12 .FirstOrDefaultAsync(m => m.ProductName == name, 13 token); 14 15 // 応答に時間がかかる時どうなるかの検証用。 16 await Task.Delay(10000, token); 17 18 // 以下は無くても上の Task.Delay でタイムアウトして 19 // OperationCanceledException がスローされる 20 token.ThrowIfCancellationRequested(); 21 22 if (product != null) 23 { 24 return Json($"品名 {name} は重複しています", 25 JsonRequestBehavior.AllowGet); 26 } 27 } 28 } 29 catch (OperationCanceledException) 30 { 31 return Json("タイムアウトで検証失敗", 32 JsonRequestBehavior.AllowGet); 33 } 34 catch(Exception) 35 { 36 return Json("サーバーエラーで検証失敗", 37 JsonRequestBehavior.AllowGet); 38 } 39 40 return Json(true, JsonRequestBehavior.AllowGet); 41}

上のコードのように OperationCanceledException を catch して適切な処理を行えばいいのではないでしょうか。

投稿2022/11/17 09:03

編集2022/11/17 09:18
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Reindeer_Csharp

2022/11/17 23:43

なるほど...!たしかにAI学習のタイムアウトなら納得できます!  コーディングしてみます!
Reindeer_Csharp

2022/11/17 23:49

コーディングしつつ色々いじってみたら解決しました。 ありがとうございます!
guest

0

なるほど...!たしかにAI学習のタイムアウトなら納得できます! 
コーディングしてみます!

記入ミスです。

投稿2022/11/17 23:19

編集2022/11/18 00:10
Reindeer_Csharp

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/11/18 00:04

私の回答に対するコメントは、私の解答欄下のコメント欄に書いてください。
Reindeer_Csharp

2022/11/18 00:09

記入ミスをしてしまいました。削除リクエストを申請しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問