コード例 #1
0
ファイル: TaskHelper.cs プロジェクト: wxytkzc/GitHubCode
        /// <summary>
        /// 开始启动任务
        /// </summary>
        /// <param name="interval">间隔时间(毫秒)</param>
        /// <param name="execMethod">要执行的方法</param>
        /// <returns>任务句柄 用于停止任务</returns>
        public static Timer Start(int interval, ExecMethod execMethod)
        {
            int   isRunning = 0;
            Timer timerItem = new Timer(delegate
            {
                if (Interlocked.Exchange(ref isRunning, 1) == 0)
                {
                    try
                    {
                        execMethod();
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        Interlocked.Exchange(ref isRunning, 0);
                    }
                }
            }, null, interval, interval);

            TimerList.Add(timerItem);
            return(timerItem);
        }
コード例 #2
0
ファイル: TimerTest.cs プロジェクト: DareDev1l/TelerikAcademy
        static void Main()
        {
            Console.Write("Period of seconds = ");
            int seconds = int.Parse(Console.ReadLine());
            Console.Write("Enter the count of numbers = ");
            int number = int.Parse(Console.ReadLine());

            ExecMethod exec = new ExecMethod(Counter);

            for (int i = 1; i <= number; i++)
            {
                exec(i);
                Thread.Sleep(1000 * seconds);
            }
        }
コード例 #3
0
ファイル: TimerTest.cs プロジェクト: THanev/TelerikAcademy
        static void Main()
        {
            Console.Write("Period of seconds = ");
            int seconds = int.Parse(Console.ReadLine());

            Console.Write("Enter the count of numbers = ");
            int number = int.Parse(Console.ReadLine());

            ExecMethod exec = new ExecMethod(Counter);

            for (int i = 1; i <= number; i++)
            {
                exec(i);
                Thread.Sleep(1000 * seconds);
            }
        }
コード例 #4
0
        public Calculator(string exp)
        {
            this.tree = CSharpSyntaxTree.ParseText(@"using System;

namespace Lab_4
{
    class First
    {
        public double exec(double x, double y)
        {
            return " + exp + @";
        }
    }
}
");

            var compilation = CSharpCompilation.Create("first",
                                                       new[] { tree },
                                                       new[] { MetadataReference.CreateFromFile(typeof(object).Assembly.Location) },
                                                       new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));

            var        stream = new MemoryStream();
            EmitResult result = compilation.Emit(stream);

            if (!result.Success)
            {
                foreach (Diagnostic item in result.Diagnostics)
                {
                    Console.Error.WriteLine($"{item.Id}: {item.GetMessage()}");
                }
                return;
            }

            stream.Seek(0, SeekOrigin.Begin);
            Assembly        assembly        = Assembly.Load(stream.ToArray());
            Type            type            = assembly.GetType("Lab_4.First");
            ConstructorInfo constructorInfo = type.GetConstructors().First();
            var             instance        = constructorInfo.Invoke(null);
            MethodInfo      method          = type.GetMethod("exec");

            delegat = (ExecMethod)method.CreateDelegate(typeof(ExecMethod), instance);
        }