之前用过winform,用wpf的这个就有点懵了。
如果我在b窗口调用counter,那就获取不了a窗口中的listview(datePath)的值(断点调试的时候)
如果我在a窗口直接使用点击按钮,用异线程反而可以获取到a窗口中的listview(datePath)的值(断点调试的时候)
如果我把创建新线程放到b窗口,那么也获取不到a窗口中的listview(datePath)的值(断点调试的时候)
代码如下
a窗口
delegate string[] PathValue();
public void Counter()
{
if (this.datePath.CheckAccess())
{
var a = FeedbackToConsole();
//var a = Feedback();
//return a;
Console.WriteLine(a);
}
else
{
var a = datePath.Dispatcher.Invoke(new PathValue(FeedbackToConsole));
//return a;
Console.WriteLine(a);
}
}
private string[] FeedbackToConsole()
{
List<string> list = new List<string>() { };
foreach (string i in datePath.Items)
{
string a = i;
list.Add(a);
Console.WriteLine(a);
}
var resultValue = list.ToArray();
return resultValue;
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{
Thread th = new Thread(Counter);
th.Start();
}
b窗口
a.Counter();