我正在编写一个程序来分析股票市场的变化。
每次更新股票图表上的蜡烛时,我的算法都会扫描每张图表以获取特定数据。我注意到这个过程每次大约需要 0.6 秒,卡住了我的应用程序。它不会陷入循环,也没有其他问题,例如异常错误会减慢它的速度。只是需要一点时间。
为了解决这个问题,我正在尝试查看是否可以对算法进行线程化。
为了调用算法来检查图表,我必须这样调用:
checkCharts.RunAlgo();
由于线程需要一个对象,我试图弄清楚如何运行 RunAlgo(),但我没有任何运气。
如何让一个线程在我的 checkCharts 对象中运行这个方法?由于反向传播数据,我无法启动新的 checkCharts 对象。我必须继续使用现有对象的那个方法。
编辑:
我试过这个:
M4.ALProj.BotMain checkCharts = new ALProj.BotMain();
Thread algoThread = new Thread(checkCharts.RunAlgo);
它告诉我 checkCharts.RunAlgo 的 checkCharts 部分给了我,“非静态字段、方法需要对象引用,或属性“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/