Files
Work/cashflow/CALCTHRD.HPP
2024-08-07 09:12:07 -04:00

62 lines
1.3 KiB
C++

#ifndef _CASHFLOW_CALCTHREAD_HPP_
#define _CASHFLOW_CALCTHREAD_HPP_
#ifndef _THREAD_MESSAGETHREAD_HPP_
#include <thread/mthread.hpp>
#endif
class CalcDlg;
class GraphWindow;
class CalcThread : public MessageThread
{
public:
enum{CalcStart};
CalcThread(void);
virtual ~CalcThread();
void startCalc(CalcDlg &calcDlg);
private:
CalcThread(const CalcThread &someCalcThread);
CalcThread &operator=(const CalcThread &someCalcThread);
DWORD threadHandler(ThreadMessage &someThreadMessage);
void performCalc(CalcDlg &calcDlg);
ThreadCallback<CalcThread> mThreadHandler;
WORD mIsInReset;
Mutex mCalcMutex;
};
#pragma warning(disable:4355)
inline
CalcThread::CalcThread(void)
: mCalcMutex("CalcMutex"), mIsInReset(FALSE)
{
mThreadHandler.setCallback(this,&CalcThread::threadHandler);
insertHandler(&mThreadHandler);
}
#pragma warning(default:4355)
inline
CalcThread::CalcThread(const CalcThread &someCalcThread)
: mCalcMutex("CalcMutex"), mIsInReset(FALSE)
{ // no implementation
*this=someCalcThread;
}
inline
CalcThread::~CalcThread()
{
mIsInReset=TRUE;
mCalcMutex.requestMutex();
mCalcMutex.releaseMutex();
stop();
removeHandler(&mThreadHandler);
}
inline
CalcThread &CalcThread::operator=(const CalcThread &/*someCalcThread*/)
{ // no implementation
return *this;
}
#endif