我正在调试双向通信的WCF项目。我有一个回调,该回调将数据存储在客户端WinForm数组中,并使用它来绘制控件。可以猜到,数据从写入数组(实际上是列表)到读取数据时都消失了。
对于调试,我想看看我是否在上编写和读取同一对象,以便回调函数不会进行某种复制并将其丢弃。例如,我想查看this-指针的地址。如何在VS2010 Exp中做到这一点?
编辑
一些代码:
现场申报:
// the cards that the player have
private List<Card> cards = new List<Card>();
回调处理程序:
private void btnDraw_Click(object sender, EventArgs e)
{
Tuple<Card, string> update = PressedDraw(this);
cards.Add(update.Item1);
PaintCards();
}
绘画事件:
private void cardPanel_Paint(object sender, PaintEventArgs e)
{
int counter = 0;
Point fromCorner = new Point(20,12);
int distance = 50;
foreach (Card card in cards)
{
Point pos = fromCorner;
pos.Offset(counter++ * distance, 0);
Bitmap cardBitmap =
cardFaces[Convert.ToInt32(card.suit),
Convert.ToInt32(card.rank)];
Rectangle square = new Rectangle(pos, cardBitmap.Size);
e.Graphics.DrawImage(cardBitmap, square);
}
当我调试时,我首先在回调处理程序中输入并在
Card
中添加一个cards
PaintCards()
调用Invalidate
并运行paint事件。当使用cardPanel_Paint
时,cards.Count
再次为零。此致。
格尔根
最佳答案
在“监视/本地/自动”窗口中,可以右键单击对象,然后选择“生成对象ID”以为该对象提供标识号。该数字实际上与 native 对象的地址相同;它可以识别。
在垃圾回收和压缩之间跟踪对象的身份,因此在应用程序的整个生命周期中,您可以确定某个对象是否是最初标记的对象。此功能可能会帮助您解决问题。
This blog post快速浏览了该功能。
关于c# - 显示C#中的引用地址(调试WCF),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4084872/