【问题标题】:Extracting value of for-loop count at runtime c#在运行时提取for循环计数的值c#
【发布时间】:2016-11-18 18:42:46
【问题描述】:

这是我的困境:

public void checkCountProgress(int countProgress, int totalDataSize){ //work done here}

public void func1(int passVar)
{
  for(int = 0; i<= 2000; i+=64){
     //do work
      checkCountProgress(i, 2000);
  }      
}

每当我遍历 for 循环时,我显然会以 64 为增量进行更改。无论我的客户端与远程主机的连接断开连接的哪个点,checkCountProgressFunction 都会为我提供 i 的值。所以我想继续从我停下来的地方写数据并将数据发送到网络。我会手动停止我的服务器,更改调用函数参数中 i 的值,运行,从客户端更新服务引用并继续,但现在我需要自动化,因为我现在必须包含到主机的多个连接。当我看一些例子时,它通常是指从一个函数传递一个参数,获取它的值并在另一种方法(How to pass value from one method to another?)中使用它,这与我想要做的完全不同。我怎样才能做到这一点?

【问题讨论】:

    标签: c# tcpclient


    【解决方案1】:

    您的意思是使用设置来存储循环停止时的值? 如果是这样,这里有一个如何使用它们的示例

    在您项目的 Properties 中,在 Settings 选项卡中添加所需值类型的新设置并将范围设置为 User。在我的示例中,我创建了一个名为 ValueToResume 的类型为 Int 且初始值为 0。

        static void Main(string[] args)
        {
            int initialLoopValue = Properties.Settings.Default.ValueToResume;
            for (int i = initialLoopValue; i <= 2000; i += 64)
            {
                //do work
                checkCountProgress(i, 2000);
            }
            Properties.Settings.Default.Reset(); //Loop was completed, we can reset the setting to 0
        }
    
        public static void checkCountProgress(int countProgress, int totalDataSize)
        {
            if (countProgress > 600)
            {
                Properties.Settings.Default.ValueToResume = countProgress;
                Properties.Settings.Default.Save();
                Environment.Exit(0); //force application exit
            }
        }
    }
    

    在第二次运行时,循环将被初始化为值 640

    【讨论】:

    • 非常感谢您提供如此深入的回答。我一定会尝试的。
    • 我唯一的问题是您在 if 语句中明确设置了 countProgress 的值。连接可能在任何阶段丢失,而不是特别是 600。我该如何实现?
    • @LindaMotaung 所以只需删除 if 条件,以便在每次触发 checkCountProgress() 时更新并保存设置值
    • 谢谢。我使用了这种方法。显然我不能使用属性变量,我必须在代码中以编程方式执行此操作:-(
    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 2020-05-16
    • 2011-01-31
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多