我正在调试双向通信的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中添加一个cardsPaintCards()调用Invalidate并运行paint事件。当使用cardPanel_Paint时,cards.Count再次为零。

此致。
格尔根

最佳答案

在“监视/本地/自动”窗口中,可以右键单击对象,然后选择“生成对象ID”以为该对象提供标识号。该数字实际上与 native 对象的地址相同;它可以识别。

在垃圾回收和压缩之间跟踪对象的身份,因此在应用程序的整个生命周期中,您可以确定某个对象是否是最初标记的对象。此功能可能会帮助您解决问题。

This blog post快速浏览了该功能。

关于c# - 显示C#中的引用地址(调试WCF),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4084872/

10-17 02:40