并入zoost库。
This commit is contained in:
91
test/serviceTest.cpp
Normal file
91
test/serviceTest.cpp
Normal file
@@ -0,0 +1,91 @@
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <tchar.h>
|
||||
#include <thread>
|
||||
#include <zoost/zoost.h>
|
||||
|
||||
class TestFunction
|
||||
{
|
||||
public:
|
||||
TestFunction() = default;
|
||||
|
||||
public:
|
||||
void Start()
|
||||
{
|
||||
isRun_ = true;
|
||||
task_ = std::thread([this]() { monitor(); });
|
||||
}
|
||||
|
||||
void Exec()
|
||||
{
|
||||
}
|
||||
|
||||
void monitor()
|
||||
{
|
||||
int counter = 0;
|
||||
while (isRun_) {
|
||||
std::this_thread::sleep_for(std::chrono::seconds(3));
|
||||
FILE* logFile = fopen("D:\\MyServiceLog.txt", "a");
|
||||
if (logFile) {
|
||||
fprintf(logFile, "CppService running - Counter: %d\n", counter++);
|
||||
fclose(logFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Stop()
|
||||
{
|
||||
std::this_thread::sleep_for(std::chrono::seconds(2));
|
||||
isRun_ = false;
|
||||
if (task_.joinable()) {
|
||||
task_.join();
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
bool isRun_{false};
|
||||
std::thread task_{};
|
||||
};
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
zoostCommon::SetOutputU8();
|
||||
|
||||
zoostWinService::serviceName_ = "TaynpgTest";
|
||||
zoostWinService::dispName_ = "My C++ Windows Service";
|
||||
|
||||
TestFunction tf;
|
||||
zoostWinService::exeFunc_ = [&tf]() { tf.Exec(); };
|
||||
zoostWinService::stopFunc_ = [&tf]() { tf.Stop(); };
|
||||
|
||||
if (argc > 1) {
|
||||
std::string command = argv[1];
|
||||
if (command == "install") {
|
||||
auto r = zoostWinService::WinInstallService();
|
||||
if (!r) {
|
||||
std::cout << zoostWinService::GetLastErrorMsg() << std::endl;
|
||||
}
|
||||
return r;
|
||||
} else if (command == "uninstall") {
|
||||
return zoostWinService::WinUninstallService();
|
||||
} else if (command == "run") {
|
||||
// 这里直接执行,用于调试。
|
||||
return 0;
|
||||
} else {
|
||||
std::cout << zoostWinService::serviceName_ << "服务程序。\n";
|
||||
std::cout << argv[0];
|
||||
std::cout << " 参数用法:\n"
|
||||
<< " install 安装服务\n"
|
||||
<< " uninstall 卸载服务\n"
|
||||
<< " run 控制台模式运行\n"
|
||||
<< " 直接运行 作为服务启动\n";
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 这里执行
|
||||
tf.Start();
|
||||
zoostWinService::WinServiceRun();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user