用线程执行带参数的方法

最近的项目用到了线程,在线程里面需要执行带有参数的方法。之前在百度里面也查到了好多方法,今天想把自己在网上查询结果和自己的应用情况做一个记录,方便后续用到时候查看。

具体需求是这样的:有一个开锁的动作,这个锁所在的PLC地址位需要保持1的状态(开锁状态)维持15秒,然后从1——>0。

我还是个小菜鸟,有写的不对的地方,还请大侠们多多指教。

 private void btn_OpenLeftLock_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Thread th_OpenLock = new Thread(new ParameterizedThreadStart(OpenLock));

                th_OpenLock.Start("0x0519");
            }
            catch (Exception ex)
            {
                LogUtil.WriteDebugLog("开左侧锁异常" + ex.ToString());
            }
        }

        //left :0x0519   right:0x0518
        //线程中执行带有参数的方法,参数类型必须是对象类型,记得类型转换
        public void OpenLock(object obj)
        {
            try
            {
                string address = obj.ToString();
                ControlLockStatic(address, "1");
                int iOpenLockDelay = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["openLockDelayTime"]);
                //处理延时
                Thread.Sleep(iOpenLockDelay * 1000);
                ControlLockStatic(address, "0");
            }
            catch (Exception ex)
            {
                LogUtil.WriteDebugLog("开锁线程" + ex.ToString());
            }
        } 

注释:

1.ThreadStart 是启动一个线程,但是没有参数。

2.ParameterThreadStart  线程可以接受一个输入参数,并且参数类型必须是对象类型object

时间: 2024-10-29 19:06:42

用线程执行带参数的方法的相关文章

线程调用带参数的方法

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Text;using System.Threading;using System.Threading.Tasks; namespace t{ /// <summary> /// get访问判断状态码 /// </summary> public class Filte

C#,往线程里传参数的方法总结

C#,往线程里传参数的方法总结 Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.   Thread (ThreadStart) 初始化 Thread 类的新实例.  由 .NET Compact Framework 支持.  Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈

带参数的方法

带参数的方法 1.语法: <访问修饰符>放回值类型<方法名><(形式方法列表)>{ //方法的主体     } 2.调用带参方法 语法:对象名.方法名(参数1,参数2.....参数N)

线程启动带参数

public void StartThread() { Thread TempThread = new Thread(new ThreadStart(Start)); TempThread.Start(); } 带参数的: public void StartThread() { Thread TempThread = new Thread(new ParameterizedThreadStart(Start)); TempThread.Start(); } public void Start(o

第十四章 带参数的方法

一.带参数的方法 1.1 语法:       <访问修饰符>  返回类型  <方法名>(<形式参数列表>) { //方法的主体       }    1.2 案例:       榨汁机       public class ZhazhiJi {        //带参数的方法        public String zhazhi(String fruit){//形参         String juice=fruit+"汁";         r

JS参数使用带参数的方法

大家都知道,在JS之中,一个变量的生命周期不是以大括号为界限的,所以即使是使用在循环或判断中的变量,外部也可以使用.可如果我们在循环或变量中使用了方法,而且这个方法使用了循环中的变量,那么后面的代码是可以修改这个变量的值的,而不是,将值的内容完全写死在了循环里面的方法中.那么解决这个问题的一种方法就是,将方法写出来,接收一个参数就可以了. 可是,在JS中传递的参数如果是方法,那么后面不能加上小括号,如果加上的话,就认为是调用了这个方法,会立即执行,这样一来,就更别说是传递参数了,那么如果解决这个

C# 往线程里传参数的方法总结

Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.   Thread (ThreadStart) 初始化 Thread 类的新实例.  由 .NET Compact Framework 支持.  Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小.   Thread (Th

十四.带参数的方法

public class Customer { String[] names = new String[5]; public void addStudent(String name) { for (int i = 0; i < names.length; i++) { if (names[i] == null) { names[i] = name; break; } } } public boolean editName(String newname, String oldname) { boo

带参数的方法。

通过前面的学习,我们知道,类的方法时一个功能模块,作用是做一件事情,实现某一个独立功能. 定义带参方法. 语法: <访问修饰符>返回值类型<方法名>(<参数列表>){ //方法的主体 } 1. <访问修饰符>是指该方法允许被访问的权限范围,只能是public ,proteected或private.其中public 访问修饰符表示该方法可以被任何其他代码调用,另外两种修饰符将在后面学习. 2.  返回值类型指方法方法返回值的类型,如果方法不返回任何值,它应声