我得到了这个异常:
An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll
当我在ThreadStart:内部插入扩展方法"SetProperty"时
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#,.NET 4.5.6。
使用线程时,此语句为true:调用线程无法访问此对象,因为其他线程拥有它。假设调用线程是GUI,我不知道为什么您需要一个昂贵的线程来运行您的属性代码。要使用调度器,请尝试:
Dispatcher.Invoke(() =>
{
// Interact with code on a different thread.
});