进程:

一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况。

进程所使用的类:Process

所需命名空间:System.Diagnostics;

可以通过进行来开启计算机上现有的程序:

1、使用静态方法Start();但必须要知道进程名

2、也可以实例化对象,来调用Start()普通方法,但调用普通方法之前需要给

StartInfo属性设置一个对象,来通知它要打开的是哪个进程(绝对路径)

例:点击按钮选择文件路径,并显示出来,点击第二个按钮可打开此程序

private void button1_Click(object sender, EventArgs e)
{
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo(textBox1.Text.Trim()); p.StartInfo = psi; p.Start(); } private void button2_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "应用程序|*.exe"; DialogResult dr = openFileDialog1.ShowDialog(); if (dr == DialogResult.OK)
{
textBox1.Text = openFileDialog1.FileName;
} }

进程

线程:

线程是程序中一个单一的顺序控制流程。一个程序只有一个主线程,winform中主线程就是控制窗体本身操作的,

如果要让它去执行一个需要一定时间才能完成的代码,那此时窗体会卡住,出现假死状态,为了避免这种情况,就需要用到多线程。

创建线程对象:Thread

线程需要执行一个方法,而这个方法允许有一个参数,并且这个参数必须是object类型的

程序默认不允许跨线程访问对象,如果仍想访问,需要在构造函数中写上Control.CheckForIllegalCrossThreadCalls = false;

线程默认开启为前台线程,程序必须将所有的前台线程执行完毕后才会真正退出程序,所以一般都会将线程改为后台线程th.IsBackground = true;

注:想让线程去执行的功能必须封装成方法

例:

public Form2()
{
InitializeComponent(); Control.CheckForIllegalCrossThreadCalls = false; } private void button1_Click(object sender, EventArgs e)
{
//创建一个线程对象,告诉它要执行的是哪一个方法
Thread th = new Thread(aaa); //设置后台线程
th.IsBackground = true; //准备好了,开始执行,不是立即开始,CPU决定什么时候开始
th.Start(sender);
(sender as Button).Enabled = false;
} private static void aaa(object bbb)
{
for (int i = ; i < ; i++)
{
Console.WriteLine(i);
Thread.Sleep();
}
(bbb as Button).Enabled = true; }

线程

TreeView递归加载:

递归就是在方法里面调用这个方法本身,但由于执行效率不高,不是很常用

Tag属性:每个控件都有,是用户自定义内容,方便程序读取某个对象使用

例:利用递归给TreeView加载中国的地区,此处由于递归中重复开启关闭数据库查询非常卡,所以只查询全部,使用Lambda表达式操作泛型集合实现

public Form1()
{
InitializeComponent(); AllList = new ChinaData().Select(); TreeNode tn1 = new TreeNode("中国");
tn1.Tag = ""; NodesBind(tn1); treeView1.Nodes.Add(tn1); } public void NodesBind(TreeNode tn)
{
//lambda 表达式
List<China> clist = AllList.Where(r => r.ParentAreaCode == tn.Tag.ToString()).ToList(); foreach (China c in clist)
{
TreeNode tnn = new TreeNode(c.AreaName);
tnn.Tag = c.AreaCode; NodesBind(tnn); tn.Nodes.Add(tnn);
}
}

递归加载

winform进程、线程、TreeView递归加载的更多相关文章

  1. WinForm 进程、线程、TreeView递归加载、发送邮件--2016年12月13日

    进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start(); Process.S ...

  2. WinForm TreeView递归加载

    这个其实通俗一点讲就是的树状分支图 首先利用递归添加数据 数据放入 treeView1.Nodes.Add() 中 public Form3() { InitializeComponent(); Tr ...

  3. treeview递归加载

    实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...

  4. 省市数据递归加载到TreeView

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. 将Xml文件递归加载到TreeView中

    #region [通过XDocument的方式将Xml文件递归到TreeView控件中] //读取Xml文件(XDocument) //1.加载Xml文件 XDocument  document=XD ...

  6. C# IO操作(五)文件的递归加载

    本篇是一个案例,其核心通过代码展示代码中的递归这个用法,程序的界面如下:

  7. (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明

    原文:http://blog.csdn.net/java_jh/article/details/20068915 迟点出更新的.这个还有BUG.因为软引应不给力了.2.3之后 前几天的原文有一个线程管 ...

  8. 递归加载Treeview

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  9. WinForm中使用BackgroundWorker异步加载数据并使用进度条

    在WinForm程序中,有时会因为加载大量数据导致UI界面假死,这种情况对于用户来说是非常不友好的.因此,在加载大量数据的情况下,首先应该将数据加载放在另一线程中进行,这样保证了UI界面的响应:其次可 ...

随机推荐

  1. iOS 判断网络连接状态的几种方法

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #801b80 } p.p2 ...

  2. 用R去做文本处理

    数据说明 这是一份爬好的数据,data.frame格式.包括一些招聘信息,具体的列名和含义如下所示: 职位名称(occ_name)清洗 预览 清洗策略 需要去除无关的信息,比如符号以及数字信息 实现 ...

  3. Web压力测试系统-nGrinder

    nGrinder是一个免费的.开放源代码的Web性能测试工具.它本身是JAVA WEB应用程序,在Tomcat服务器中运行. 它由一个controller端和一个或多个Agent端组成.nGrinde ...

  4. php php-5.6.4.tar.bz2 apache 兼容问题 child pid 27858 exit signal Segmentation fault

    环境 [root envirotar]# uname -a Linux i2..el6.x86_64 # SMP Thu Jul :: UTC x86_64 x86_64 x86_64 GNU/Lin ...

  5. 【bzoj1672】[USACO2005 Dec]Cleaning Shifts 清理牛棚

    题目描述 Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now ...

  6. 卡特兰数(Catalan)

    卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名,其前几项为 : 1, 2, ...

  7. Struts的jar说明

  8. .NET WEB项目的调试发布相关

    最近接触了.NET WEB项目,调试的时候因为没配置好文件浪费了些时间,特此记录一下相关配置,以后备用 如果IIS的基目录指向了别处,在build以后必须要发布,其实就是把最新的程序更新到IIS的基目 ...

  9. Anaconda 用于科学计算的 Python 发行版

    用于科学计算的 Python 发行版: 1.Anaconda  https://www.continuum.io/    公司continuum.  有商业版本. Anaconda is the le ...

  10. Unity3D 接完GVR SDk后如何插入自己的java代码

    1.用Eclipse创建一个Android Application Project 2.用压缩软件打开gvr_android_common.aar和unitygvractivity.aar,分别把里面 ...