C#-锁定if语句-移动变量

本文关键字:移动 变量 语句 锁定 if C#- | 更新日期: 2023-09-27 17:57:58

我有一个简单的代码,其中包含一个移动变量和几个范围。变量以伪随机方式增加或减少,我无法控制它。范围是我的if语句。

每个if语句都有两个命令,我需要满足并执行其中一个命令,然后代码才能继续

问题是,在执行其中一个命令之前,变量可能会移动到不同的范围,这会迫使代码期望两个不同的命令。

在执行其中一个命令之前,无论变量在哪里,我如何才能让代码不做任何其他事情?

注意:保证其中一个命令在给定的足够时间内执行。

而循环并没有起作用,因为它们被视为无限循环。诸如"trigger one or two was executed=true/false"之类的bool也不起作用,将代码捕获在bool语句中会产生与while循环相同的结果。我也尝试过switch语句,但它与下面的if集合没有什么不同。

我已经研究过使用状态机和递归方法,但现在它们有点超出了我的能力,不知道它们现在是否适用于我。

以下代码是一个通用示例:

    int MP = moving variable; //updated every iteration of the code
    int R3, R2, R1, S1, S2, S3; //static variables input by user- in descending order
    //MP usually starts between S1 and R1
    if(R3 < MP < R2)
    {
       command one; //an if statement that gives command when triggered
       command two; //another if statement
    }
    if(R2 < MP < R1)
    {
       command one;
       command two;
    }
    if(R1 < MP < S1)
    {
       command one;
       command two;
    }
    if(S1 < MP < S2)
    {
       command one;
       command two;
    }
    if(S2 < MP < S3)
    {
       command one;
       command two;
    }

如果有帮助的话,我可以引入实际的代码,但我相信我已经把问题缩小到了这个范围,并尽我所能简单地描述它。我也可以更详细地介绍其中的任何部分。

我希望这就像我忽略了一个选项一样简单,或者可能还有一些我还没有学到的东西。

感谢您抽出时间

编辑-这是一个自动交易算法。MP是来自经纪人的特定商品价格的实时消息,范围是用户认为商品价格将达到的价格点。这两个动作是下买入或卖出订单,当价格达到一定水平时执行。问题的出现是因为,其中一个价格点在不同的范围内(对于那些了解交易的人来说,是停止订单)。因此,if语句之间存在短暂的重叠。正在发生的情况是,高于或低于范围的命令在相邻范围的停止命令之前执行。这就是为什么在提交新订单之前,我需要执行一个初始订单。

我确信这只会让事情变得更加混乱,这就是为什么我试图将其保持在一个非常概念化的水平上。-结束编辑

C#-锁定if语句-移动变量

将MP分配给一个临时变量,然后围绕if语句执行while循环。在循环的每次迭代中,将MP重新分配给临时变量。这样就可以保证变量在飞行中不会发生变化。

您发布的代码,MP的值在初始化时和最后一条if语句的底部之间不会发生变化。

如果您关心在多个线程中运行此方法的任何调用代码,那么在执行第二个时,第一个还没有完成。然后,您必须将您的值放入队列(更可能是ConcurrentQueue)中,并从那里处理它们。

这就是为什么我需要在新订单之前执行一个初始订单其中一个已提交

你在这里的陈述,尖叫着"我需要一个处理队列"。