c# - 线程化对象中包含的方法 - C#

标签 c# multithreading algorithm

我正在编写一个程序来分析股票市场的变化。

每次更新股票图表上的蜡烛时,我的算法都会扫描每张图表以获取特定数据。我注意到这个过程每次大约需要 0.6 秒,卡住了我的应用程序。它不会陷入循环,也没有其他问题,例如异常错误会减慢它的速度。只是需要一点时间。

为了解决这个问题,我正在尝试查看是否可以对算法进行线程化。

为了调用算法来检查图表,我必须这样调用:

checkCharts.RunAlgo();

由于线程需要一个对象,我试图弄清楚如何运行 RunAlgo(),但我没有任何运气。

如何让一个线程在我的 checkCharts 对象中运行这个方法?由于反向传播数据,我无法启动新的 checkCharts 对象。我必须继续使用现有对象的那个方法。

编辑:

我试过这个:

M4.ALProj.BotMain checkCharts = new ALProj.BotMain(); 
Thread algoThread = new Thread(checkCharts.RunAlgo); 

它告诉我 checkCharts.RunAlgocheckCharts 部分给了我,“非静态字段、方法需要对象引用,或属性“M4.ALProj.BotMain”。”

在特定的 if 语句中,我打算将 algoThread.Start(); 知道我在那里做错了什么吗?

最佳答案

你的问题的答案其实很简单:

Thread myThread = new Thread(checkCharts.RunAlgo);
myThread.Start();

但是,更复杂的部分是确保当方法 RunAlgo 访问 checkCharts 对象内的变量时,这是以线程安全的方式发生的。

参见 Thread Synchronization寻求有关如何从多个线程同步访问数据的帮助。

关于c# - 线程化对象中包含的方法 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41992938/

相关文章:

Java 多线程代码在某些进程上没有完全消耗内核

java - wowza java cpu使用率高

c++ - 另一个线程完成后立即生成一个新线程

具有 3 列键的 Java Map

c# - 如何在 ASP.Net MVC3 C#4 中延迟 Controller 操作结果

c# - 从 Entity Framework 5 升级到 6

c# - 如何以编程方式填充现有 PDF 文档

c# - 反序列化为正确的子对象

algorithm - 红黑树 - K 插入和 K 删除所需的最大旋转次数?

python - 在可能不规则的字符串/数组中查找最常见重复模式的算法