質問編集履歴
2
省略していたコードを追加。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,12 +1,20 @@
|
|
1
|
-
|
1
|
+
**回答者様、すみません。回答と齟齬が発生しますが、わかりにくいので質問を修正します**
|
2
2
|
|
3
|
-
FileSystemWatherを使えません。
|
4
3
|
|
5
|
-
FileSystemWatherがUIと別スレッドなので
|
6
4
|
|
7
|
-
|
5
|
+
①WPFでファイル監視アプリを作り、ファイルが新規作成された時点でWindowのTitleを弄ろうとしたところ、FileSystemWatherの部分でエラー発生しました。
|
8
6
|
|
7
|
+
> System.InvalidOperationException: このオブジェクトは別のスレッドに所有されているため、呼び出しスレッドはこのオブジェクトにアクセスできません。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
②FileSystemWatherがUIと別スレッドなので
|
14
|
+
|
15
|
+
SynchronizingObject=this;として解決できると思いましたが、次のエラーが出ます。
|
16
|
+
|
9
|
-
> 型 'Window1' を 'System.ComponentModel.ISynchronizeInvoke' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
|
17
|
+
> 型 'Window1' を 'System.ComponentModel.ISynchronizeInvoke' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
|
10
18
|
|
11
19
|
|
12
20
|
|
@@ -64,7 +72,7 @@
|
|
64
72
|
|
65
73
|
//UIthred
|
66
74
|
|
67
|
-
// filewacher.SynchronizingObject = this; ←キャストミスといわれる。GetWindowとかでキャストしてもダメ
|
75
|
+
// filewacher.SynchronizingObject = this; ←②キャストミスといわれる。GetWindowとかでキャストしてもダメ
|
68
76
|
|
69
77
|
|
70
78
|
|
@@ -112,13 +120,13 @@
|
|
112
120
|
|
113
121
|
{
|
114
122
|
|
115
|
-
//
|
123
|
+
//the created file path
|
116
124
|
|
117
125
|
string FilePath = objEventArguments.FullPath;
|
118
126
|
|
127
|
+
//WindowのTitleを変更するよ
|
119
128
|
|
120
|
-
|
121
|
-
|
129
|
+
window1.Title = FilePath + "というファイル検知したよ";
|
122
130
|
|
123
131
|
}
|
124
132
|
|
@@ -126,7 +134,7 @@
|
|
126
134
|
|
127
135
|
{
|
128
136
|
|
129
|
-
Console.WriteLine(objException.Message);
|
137
|
+
Console.WriteLine(objException.Message); //←①ここで例外をキャッチされた
|
130
138
|
|
131
139
|
}
|
132
140
|
|
1
いらない箇所を削除
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
SynchronizingObject=this;として解決できると思いましたが、次のエラーが出ます
|
8
8
|
|
9
|
-
> 型 '
|
9
|
+
> 型 'Window1' を 'System.ComponentModel.ISynchronizeInvoke' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
|
10
10
|
|
11
11
|
|
12
12
|
|