gpt4 book ai didi

c# - 关于在文件加载期间使 C# 类持久化的问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:26 27 4
gpt4 key购买 nike

为描述性的标题道歉,但这是我目前能想到的最好的标题。

基本上,我编写了一个将文件加载到数据库中的单例类。这些文件通常很大,需要数小时才能处理。我正在寻找的是创建一个可以让此类运行的方法,并且能够从其中调用方法,即使它正在调用的类已关闭。

单例类很简单。它启动一个线程将文件加载到数据库中,同时具有报告当前状态的方法。简而言之,它有点像这样:

public sealed class BulkFileLoader {
static BulkFileLoader instance = null;
int currentCount = 0;

BulkFileLoader()

public static BulkFileLoader Instance
{
// Instanciate the instance class if necessary, and return it
}

public void Go() {
// kick of 'ProcessFile' thread
}


public void GetCurrentCount() {
return currentCount;
}

private void ProcessFile() {
while (more rows in the import file) {
// insert the row into the database
currentCount++;
}
}
}

想法是,您可以让 BulkFileLoader 实例执行,这将处理要加载的文件,同时您可以随时使用 GetCurrentCount() 方法实时更新到目前为止已完成的行数。

这工作正常,除了调用类需要一直保持打开状态才能继续处理。一旦我停止调用类,BulkFileLoader 实例就会被删除,并且它会停止处理文件。我所追求的是一个解决方案,无论调用类发生什么情况,它都将继续独立运行。

然后我尝试了另一种方法。我创建了一个启动 BulkFileLoader 的简单控制台应用程序,然后将其包装为一个进程。这解决了一个问题,因为现在当我启动进程时,即使我关闭调用进程的类,文件也会继续加载。但是,现在我遇到的问题是无法获取当前计数的更新,因为如果我尝试获取 BulkFileLoader 的实例(如前所述,它是一个单例),它会创建一个 new 实例,而不是返回当前正在执行过程中的实例。单例似乎不会扩展到机器上运行的其他进程的范围。

最后,我希望能够启动 BulkFileLoader,并且能够随时了解它处理了多少行。但是,即使我关闭了我用来启动它的应用程序也是如此。

谁能看到我的问题的解决方案?

最佳答案

您可以创建一个 Windows Service这将公开一个 WCF 端点,这将是它的 API。通过此 API,您将能够查询服务的状态并添加更多文件进行处理。

关于c# - 关于在文件加载期间使 C# 类持久化的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2467610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com