回答編集履歴

4

追記&訂正

2020/06/19 01:37

投稿

退会済みユーザー
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- Dispose パターンを実装するには「Dispose パターンを使ってインターフェイスを実装します」を選択します。そうすると以下の画像のようなコードが自走生成されてコードに追加されるはずです。
39
+ Dispose パターンを実装するには「Dispose パターンを使ってインターフェイスを実装します」を選択します。そうすると以下の画像のようなコードが生成されてコードに追加されるはずです。
40
40
 
41
41
 
42
42
 

3

追記

2020/06/19 01:37

投稿

退会済みユーザー
test CHANGED
@@ -15,6 +15,10 @@
15
15
 
16
16
 
17
17
  下のコメント欄の 2020/06/19 09:52 の私のコメントで「Dispose パターンについて回答欄に追記しておきます」と書きましたが、それを以下に追記します。
18
+
19
+
20
+
21
+ 参考にされている記事の「NotifyIcon クラス の ラッパー」の NotifyIcon というのが System.Windows.Forms 名前空間の NotifyIcon クラスのことであれば、そのクラスは System.ComponentModel 名前空間の Component クラスを継承しており、Component クラスは IDisposable インターフェイスを継承しているので、NotifyIconWrapper も Dispose が必要ということなのかもしれませんね。
18
22
 
19
23
 
20
24
 

2

追記

2020/06/19 01:27

投稿

退会済みユーザー
test CHANGED
@@ -7,3 +7,59 @@
7
7
 
8
8
 
9
9
  Dispose パターンというのがあるので、ググって調べてみてください。Visual Studio には Dispose パターンの実装をサポートする機能があります。そのあたりもググると情報が得られると思います。
10
+
11
+
12
+
13
+ **【追記】**
14
+
15
+
16
+
17
+ 下のコメント欄の 2020/06/19 09:52 の私のコメントで「Dispose パターンについて回答欄に追記しておきます」と書きましたが、それを以下に追記します。
18
+
19
+
20
+
21
+ > クイックアクションとリファクタリングを参考に、IDisposableインターフェイスを実装しました。
22
+
23
+
24
+
25
+ そのコードは、以下の記事の一番上の画像にある「インターフェイスを実装します」を選択した結果ですよね? それは Dispose パターンを実装したのではなく、NotImplementedException 例外をスローする Dispose メソッドを実装しただけです。
26
+
27
+
28
+
29
+ Dispose パターン
30
+
31
+ [http://surferonwww.info/BlogEngine/post/2019/05/31/dispose-pattern.aspx](http://surferonwww.info/BlogEngine/post/2019/05/31/dispose-pattern.aspx)
32
+
33
+
34
+
35
+ Dispose パターンを実装するには「Dispose パターンを使ってインターフェイスを実装します」を選択します。そうすると以下の画像のようなコードが自走生成されてコードに追加されるはずです。
36
+
37
+
38
+
39
+ ![イメージ説明](5a67e8592b284d373ad9221eedbe7b13.jpeg)
40
+
41
+
42
+
43
+ その Dispose パターンの中で NotifyIconWrapper を Dispose するには、上のコードの protected virtual void Dispose(bool disposing) メソッド内のコメント「// TODO: dispose managed state (managed objects).」のところで
44
+
45
+
46
+
47
+ ```
48
+
49
+ this.notifyIcon.Dispose();
50
+
51
+ ```
52
+
53
+ とします。
54
+
55
+
56
+
57
+ それで少なくともエラーにはならないと思います。
58
+
59
+
60
+
61
+ ただし、WPF & 常駐アプリの App.xaml.cs でそういうことをしてリソースを開放できるのかどうかは、WPF には疎い自分には分かりません。
62
+
63
+
64
+
65
+ WPF & 常駐アプリということで、参考にされている記事では Dispose パターンは実装せず(Dispose パターンでは Dispose できない?)、OnExit メソッド内で Dispose しているのかもしれません。

1

追記

2020/06/19 01:25

投稿

退会済みユーザー
test CHANGED
@@ -3,3 +3,7 @@
3
3
 
4
4
 
5
5
  自分でカスタムクラスを作っていて、それにアンマネージドリソースを使っているとか、IDisposable インターフェイスを継承したクラスを使っているなら話は別ですが。
6
+
7
+
8
+
9
+ Dispose パターンというのがあるので、ググって調べてみてください。Visual Studio には Dispose パターンの実装をサポートする機能があります。そのあたりもググると情報が得られると思います。