小编Swa*_*911的帖子

调试方法AttachThreadInput()时Visual Studio 2010挂起

我有Visual Studio 2010 Ultimate SP1,我的项目基于MFC.

当我调试我的项目的下一个代码时Visual Studio挂起:

CWnd* _window = CWnd::FromHandle(_hwnd_);
if (_window) {
    DWORD nForeThread, nAppThread;

    nForeThread = ::GetWindowThreadProcessId(::GetForegroundWindow(), 0);
    nAppThread = GetCurrentThreadId();

    if (nForeThread != nAppThread)
    {
        AttachThreadInput(nForeThread, nAppThread, TRUE);
        _window->BringWindowToTop();
        _window->ShowWindow(SW_RESTORE);
        AttachThreadInput(nForeThread, nAppThread, FALSE);
    }
    else
    {
        _window->BringWindowToTop();
        _window->ShowWindow(SW_RESTORE);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在下一行有一个断点:

    AttachThreadInput(nForeThread, nAppThread, TRUE);
Run Code Online (Sandbox Code Playgroud)

因此,如果我按下F10或F11或F5按钮,则VS会立即挂起.

可能是什么问题呢?

c++ debugging mfc hang visual-studio-2010

3
推荐指数
1
解决办法
2861
查看次数

c ++:std :: tr1 :: shared_ptr来自此

我有以下代码:

#include <memory>

class Foo;
typedef std::tr1::shared_ptr<Foo> pFoo_t;

class DoSomething
{
public:
    static void doSomething( pFoo_t p) { printf( "doing something...\n"); }
    static void doSomethingElse( pFoo_t p) { printf( "doing something else...\n"); }
};

class Foo
{
public:
    Foo() { printf( "foo()\n"); }
    ~Foo() { printf( "~foo()\n"); }
public:
    void doSomething() { DoSomething::doSomething(pFoo_t(this)); }
    void doSomethingElse() { DoSomething::doSomethingElse(pFoo_t(this)); }
};

int _tmain(int argc, _TCHAR* argv[])
{
    Foo foo;
    foo.doSomething();
    foo.doSomethingElse();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我开始这个样本,然后我得到下一个断言:_BLOCK_TYPE_IS_VALID(pHead-> nBloakUse).

我怎么能避免这个?

我使用以下代码来解决此问题:

class Foo;
typedef …
Run Code Online (Sandbox Code Playgroud)

c++ class smart-pointers shared-ptr weak-ptr

0
推荐指数
1
解决办法
1289
查看次数