Pull to refresh

Comments 4

Объясните пожалуйста подробнее, момент подсчета экземпляров библиотеки, для чего он нужен и где объявляется?

TestBackgroundTask() throw()
        : m_count(1)
    {
        //Увеличиваем общее количество экземпляров объектов библиотеки
        InterlockedIncrement(&m_objectsCount);
    }
Внимательный но спешащий, вопрос снят.
Наверно, пропустили вот эту часть статьи
Внимательный читатель мог заметить странную деталь в конструкторах и деструкторах классов, а именно инкремент и декремент переменной m_objectsCount. Данную переменную я объявил сразу после директив using перед кодом классов. А используется она в экспортируемой библиотекой функции DllCanUnloadNow:

Подсчет объектов нужен, для того, чтобы исполняющая среда узнала может ли она выгрузить библиотеку.
А в коде определение переменной выглядит вот так
#include "pch.h"
#include "TestComponent.h"

//Импортируем пространство имён нашего компонента
using namespace ABI::NMSPC::TestComponent;
//Импортируем интерфейсы из пространства имён ABI::Windows::ApplicationModel::Background
using ABI::Windows::ApplicationModel::Background::IBackgroundTask;
using ABI::Windows::ApplicationModel::Background::IBackgroundTaskInstance;

//Переменная для хранения числа текущих экземпляров объектов библиотеки.
//Значение данной переменной будем изменять в конструкторах объектов реализации 
//фоновой задачи и фабрики.
ULONG m_objectsCount = 0;
..................................................................
Спасибо, как описал выше просто поспешил, встретив в фабрике опять этот подсчет экземпляров, буквально не дочитал пару строк :)
Sign up to leave a comment.

Articles

Change theme settings