DataTable dt = fm_main_data.c_data.BJLX;
这段代码提示了异常:
是引用封送类的字段,访问上面的成员可能导致运行时异常;
============================================================================================
解决:
DataTable dt = fm_main_data.c_data.BJLX.Copy();
=========================================
原因:http://technet.microsoft.com/zh-cn/library/x524dkh4(v=vs.90).aspx
错误消息
由于“member”是引用封送类的字段,访问上面的成员可能导致运行时异常
当您尝试对从 MarshalByRefObject 派生的类成员调用方法、属性或索引器时,并且该成员是值类型时,会出现此警告。若要解决此警告,请将该成员复制到局部变量并对此变量调用方法。
下面的示例生成 CS1690:
// CS1690.cs
using System;
class WarningCS1690: MarshalByRefObject
{
int i = 5;
public static void Main()
{
WarningCS1690 e = new WarningCS1690();
e.i.ToString(); // CS1690
// OK
int i = e.i;
i.ToString();
e.i = i;
}
}
=======================================================================================================================================================================================
我的总结:
marshal
================================================================
介绍(http://blog.csdn.net/enemyisgodlike/article/details/20391861)
webservice 是MarshByValue的,必须传对象的值。速度慢,可以过FIREWALL,配置比较简单,适合internet(因特网)。//??不确定
二:问题
fm_main_data.c_data.BJLX.Copy();中c_data是结构体 值类型 而 fm_main_data 定义如下: private FM_Main fm_main_data;
1: 在哪里使用了MarshalByRefObject?
2: 提示异常可能造成什么结果?
3: 为什么示例生成 CS1690的代码:如果不使用tostring() (比如直接赋值) 就不会提示异常?
C#这里太墨迹了 待续待续。。。。。
n.元帅; 典礼官; 执法官; 消防局长;
vt.整理,排列,集结;
Marshal 类
MarshalByRefObject
实现 IComponent 并提供可远程控制的组件的基实现,该组件是由值封送的(传递序列化对象的副本)。