我得到了这个例外:
An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll
当我插入扩展方法' SetProperty'在ThreadStart中:
Object temp = element;
PropertyInfo currentProperty = temp.GetType().GetProperty("FontSize");
object currentValue = currentProperty.GetValue(temp);
threads[i] = new Thread(
new ThreadStart(() =>
{ currentProperty.SetValue(temp, Convert.ChangeType(58, currentProperty.PropertyType), null); }));
threads[i].Start();
但是当我在没有线程的情况下使用SetValue时,一切都可以正常运行,没有任何异常或错误。
PropertyInfo currentProperty = temp.GetType().GetProperty("FontSize");
object currentValue = currentProperty.GetValue(temp);
currentProperty.SetValue(temp, Convert.ChangeType(58, currentProperty.PropertyType), null);
使用Thread可能存在哪些问题? 我使用的是C#6,.NET 4.5.6。
答案 0 :(得分:1)
使用线程时,此语句为true:调用线程无法访问此对象,因为其他线程拥有该对象。 假设调用线程是GUI,我不确定为什么你需要一个昂贵的线程来运行你的属性代码。 要使用调度程序,请尝试:
Dispatcher.Invoke(() =>
{
// Interact with code on a different thread.
});