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

时间:2016-07-20 17:56:54

标签: c# if-statement

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

每个if语句都有两个命令,在代码可以继续之前,我需要满足并执行两个命令之一。

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

如果执行其中一个命令,我怎么能阻止代码执行任何其他操作,尽管变量在哪里?

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

虽然循环没有起作用,因为它们被视为无限循环。 诸如"触发一个或两个的bools被执行== true / false"也没有用,并且在bool语句中捕获代码会产生与while循环相同的结果。我也尝试了一个switch语句,但下面的ifs集合没有什么不同。

我已经研究过使用状态机和递归方法,但此时它们有点超出我的范围,并且不知道它们现在是否适合我。

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

    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语句。发生的事情是,在相邻范围的停止订单之前执行上面或下面的范围订单。这就是为什么我需要在执行新订单之前执行其中一个初始订单。

我确信这只会使事情变得更加混乱,这就是为什么我试图将其保持在一个非常概念的层面。 - 编辑

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您发布的代码,MP 的值在初始化和最后if语句的底部之间不会更改。

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

  

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

你的声明在这里尖叫“我需要一个处理队列”。