使用cll的backgroundworker

时间:2012-09-16 04:37:43

标签: c# c multithreading dll backgroundworker

我有一个 c# ui,可以调用 C dll 。 UI打开一个工作区,我希望DLL在用户在工作区中执行其他工作时在后台加载大文件。现在,UI在pinvoke的帮助下与DLL通信。 (loadFile是C dll函数之一。)

在某些时候,用户会在工作区中执行某些操作,要求文件完全加载,因此需要以某种方式查询DLL是否已完成加载文件。我有 c# C代码的来源,因此我可以更改任何一方的内容。

成为 c#的新手,并且永远不会超过业余C编码员,我可以使用c# backgroundWorker实现我想要的目标吗?

或使用某种形式的线程?

或者C dll会阻止所有内容,直到它完成加载?

1 个答案:

答案 0 :(得分:0)

您可以从后台工作组件调用C函数。此外,您需要确保触发后台工作程序的完成事件。这可以使用后台工作程序的属性进行设置。

这样,当后台工作人员完成其工作时,它将通知用户界面工作已完成,用户界面可以适当地处理图像。

在这里,你必须确保你的C代码是阻塞的,即不是多线程的,以确保只有在函数完成工作后才触发后台工作程序事件。