質問するログイン新規登録

質問編集履歴

3

IDisposeを設定して発生したエラー内容を記載

2020/06/18 18:06

投稿

hasshy
hasshy

スコア102

title CHANGED
File without changes
body CHANGED
@@ -88,8 +88,18 @@
88
88
  }
89
89
  ```
90
90
 
91
+ #### 発生したエラー
91
92
  実装したところ別の警告が発生して、Appクラスそのものを大きく修正しないと解決出来ないエラーが発生しました。
92
93
 
94
+ コード|説明
95
+ ---|---
96
+ CA1065|Dispose は型 NotImplementedException の例外を作成します。この型のメソッドでは例外を発生させることはできません。この例外インスタンスが発生する可能性がある場合は、例外が発生しないようにこのメソッドのロジックを変更します。
97
+ CA1063|'App' で Dispose(bool) のオーバーライド可能な実装を提供するか、型を sealed としてマークします。Dispose(false) を呼び出す場合は、ネイティブ リソースのみがクリーンアップされます。Dispose(true) を呼び出す場合には、マネージド リソースとネイティブ リソースの両方がクリーンアップされます。
98
+ CA2000|'new App()' が作成したオブジェクトへの参照がすべてスコープ外になる前に、そのオブジェクトの System.IDisposable.Dispose を呼び出してください。
99
+ CA1063|'App.Dispose' を変更し、Dispose(true) を呼び出したのちに現在のオブジェクト インスタンスで GC.SuppressFinalize (Visual Basic の 'this' または 'Me') を呼び出して、結果を戻すようにします。
100
+ CA1816|GC.SuppressFinalize(object) を呼び出すように App.Dispose() を変更します。これにより、ファイナライザーを導入する派生型で、その呼び出しのために 'IDisposable' を再実装する必要がなくなります。
101
+
102
+
93
103
  ## 所見
94
104
  エラーの解説ページの修正方法が、IDisposableインターフェイスとして実装と書かれている事です。
95
105
  [CA1001:破棄可能なフィールドを所有する型は、破棄可能でなければなりません](https://docs.microsoft.com/ja-jp/visualstudio/code-quality/ca1001?view=vs-2019)

2

誤記削除

2020/06/18 18:06

投稿

hasshy
hasshy

スコア102

title CHANGED
File without changes
body CHANGED
@@ -38,17 +38,6 @@
38
38
  private NotifyIconWrapper NotifyIconWrapper = new NotifyIconWrapper();
39
39
 
40
40
  /// <summary>
41
- /// System.Windows.Application.Startup イベントのラッパー
42
- /// </summary>
43
- /// <param name="e"></param>
44
- protected override void OnStartup(StartupEventArgs e)
45
- {
46
- base.OnStartup(e);
47
- this.ShutdownMode = ShutdownMode.OnExplicitShutdown;
48
- this.notifyIcon = new NotifyIconWrapper();
49
- }
50
-
51
- /// <summary>
52
41
  /// System.Windows.Application.Exit イベントのラッパー
53
42
  /// </summary>
54
43
  /// <param name="e"></param>

1

ソースにonstartup関数を追記

2020/06/18 17:53

投稿

hasshy
hasshy

スコア102

title CHANGED
File without changes
body CHANGED
@@ -21,6 +21,7 @@
21
21
  タスクメニューに表示するアイコンのラッパーです。
22
22
 
23
23
  アプリケーションを終了する際にコンポーネントクラスを開放します。
24
+ 開始時にインスタンスを作る処理を記載し忘れておりました。
24
25
 
25
26
  ```cs
26
27
  namespace SampleProject
@@ -34,16 +35,27 @@
34
35
  /// <summary>
35
36
  /// タスクトレイに表示するアイコンのコンポーネント
36
37
  /// </summary>
37
- private NotifyIconWrapper notifyIcon = new NotifyIconWrapper();
38
+ private NotifyIconWrapper NotifyIconWrapper = new NotifyIconWrapper();
38
39
 
39
40
  /// <summary>
41
+ /// System.Windows.Application.Startup イベントのラッパー
42
+ /// </summary>
43
+ /// <param name="e"></param>
44
+ protected override void OnStartup(StartupEventArgs e)
45
+ {
46
+ base.OnStartup(e);
47
+ this.ShutdownMode = ShutdownMode.OnExplicitShutdown;
48
+ this.notifyIcon = new NotifyIconWrapper();
49
+ }
50
+
51
+ /// <summary>
40
52
  /// System.Windows.Application.Exit イベントのラッパー
41
53
  /// </summary>
42
54
  /// <param name="e"></param>
43
55
  protected override void OnExit(ExitEventArgs e)
44
56
  {
45
57
  base.OnExit(e);
46
- this.notifyIcon.Dispose();
58
+ this.NotifyIconWrapper.Dispose();
47
59
  }
48
60
  }
49
61
  }