| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1178 人关注过本帖
标题:C# 是如何运行的,我是刚介入C#的,是像MFC一样,通过消息机制来运行的吗? ...
只看楼主 加入收藏
mtg
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-4-8
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:14 
C# 是如何运行的,我是刚介入C#的,是像MFC一样,通过消息机制来运行的吗?
C#  是如何运行的,我是刚介入C#的,是像MFC一样,通过消息机制来运行的吗?
比如看懂以下语句,需要具备哪些知识,下面语句是如何运行的?请回答
   private void Start_Click(object sender, EventArgs e)
        {
            if (this._settings.rbRunTypeOnce)
            {
                this._taskRepeatInterval = 0;
                this._taskRepeatCnt = 0;
            }
            else {
                this._taskRepeatInterval = (int)(this._settings.numInterval * 1000 * 60);
                this._taskRepeatCnt = (int)(this._settings.numRepeatCount);
            }

            bwFetch.RunWorkerAsync();

[ 本帖最后由 mtg 于 2013-4-8 09:44 编辑 ]
搜索更多相关主题的帖子: private 如何 知识 
2013-04-08 09:42
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
是通过消息机制来运行的,只是消息机制被封装起来了,可以不用去自己写
在C#中是通过事件来触发操作的,Start_Click表示为某个Name为Start的控件,被鼠标左键点击的时候触发,触发以后,就执行该方法里面的语句.
你只需要知道C#的语法,关键字和事件就可以看懂了
2013-04-08 09:57
mtg
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-4-8
收藏
得分:0 
可能我没有表达清楚,我主要是问下面语句,是如何运行的,看懂它,需要看哪些知识,请推荐一本这方面的好书   
if (this._settings.rbRunTypeOnce)
            {
             this._taskRepeatInterval = 0;
                this._taskRepeatCnt = 0;
            }
            else {
                this._taskRepeatInterval = (int)(this._settings.numInterval * 1000 * 60);
                this._taskRepeatCnt = (int)(this._settings.numRepeatCount);
            }

            bwFetch.RunWorkerAsync();

2013-04-08 10:06
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:10 
这个啊,如果只看这几句,除了写代码的人以外,别人都看不懂,我大概只能看出是定时在后台执行什么东西吧
因为这些代码除了RunWorkerAsync()是C#中BackgroundWorker类中的方法外,其它都是作者自己定义的变量或引用,别人怎么知道是什么意思呢
不过我还看出_settings应该是定义的一个枚举,至于这个枚举里面定义的rbRunTypeOnce,numInterval,numRepeatCount分别代表什么,还真不知道
但是从作者定义的英文上大致猜出
if(设置为运行一次)
{
   任务重复时间 = 0;
   任务重复次数 = 0;
}
else
{
   任务重复时间(应该就是每隔多少时间执行一次的意思) = 设定的时间(分钟为单位) * 1000 * 60;
  //因为时间通常是毫秒为单位,1000 * 60 就表示1分钟,那前面的this._settings.numInterval理应表示为多少分钟  

   任务重复次数 = 设定的次数;
}

bwFetch.RunWorkerAsync();开始在后台执行操作

至于执行什么操作,要看bwFetch类中写了什么了
2013-04-08 10:40
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
如果真要推荐的话,我推荐英文词典你可以多看看
2013-04-08 10:42
mtg
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-4-8
收藏
得分:0 
谢谢版主对语句的解释!说到了程序的意思!
2013-04-08 11:02
mtg
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-4-8
收藏
得分:0 
程序中有下面语句:
1、  
private Settings _settings = Settings.Default;
3、
 internal sealed partial class Settings {
        
        public Settings() {
            // // 若要为保存和更改设置添加事件处理程序,请取消注释下列行:
            //
            // this.SettingChanging += this.SettingChangingEventHandler;
            //
            // this.SettingsSaving += this.SettingsSavingEventHandler;
            //
        }


3、初始化:
 this.bwFetch = new ();
2013-04-08 11:22
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:10 
原来Settings是定义的一个类
1. private Settings _settings = Settings.Default;
定义私有类型为Settings的引用_settings,初使值为Settings.Default; Default应该是个静态的属性,至少有提供get方法,返回一个Settings类型的值

2. internal sealed partial class Settings {
        public Settings() {
            // // 若要为保存和更改设置添加事件处理程序,请取消注释下列行:
            //
            // this.SettingChanging += this.SettingChangingEventHandler;
            //
            // this.SettingsSaving += this.SettingsSavingEventHandler;
            //
        }
 }
Settings类的定义,internal访问修饰符,表示该程序集内可用
sealed表示该类不可被继承
partial表示该类可能分成了不只一个文件,也就是在另一个文件中,可能还有Settings类的定义,但这些都属于同一个Settings类,而不是两个或多个Settings类,当然在另外的Settings类定义时,同样需要partial关键字
class是类关键字,后面跟类名
public Settings()构造函数,在创建Settings实例时被调用

3.this.bwFetch = new ();
类中应该有一个bwFetch的变量定义,或者说是变量的申明
这里是给这个变量赋值,这个变量的类型是BackgroundWorker类,也就是创建一个BackgroundWorker类的实例,赋给变量(或称做引用)bwFetch
2013-04-08 12:41
shangsharon
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
威 望:7
帖 子:221
专家分:1261
注 册:2012-3-25
收藏
得分:0 
回复 2楼 yhlvht
"Start_Click表示为某个Name为Start的控件,被鼠标左键点击的时候触发",这句话有问题哦.

Start_Click这里应该只是点击事件,而不涉及鼠标,更不能说是鼠标左键了.
从private void Start_Click(object sender, EventArgs e)参数e的类型可以知道,事件与鼠标的关系不大.
如果是这个方法private void Start_MouseClick(object sender, MouseEventArgs e),则是鼠标点击事件,参数e包含有鼠标信息.当然,两个参数e是可以相互转化的.
我想第一个方法应该是适用于平板电脑上的点击吧.
收到的鲜花
  • yhlvht2013-04-08 14:18 送鲜花  5朵  
2013-04-08 13:23
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
谢谢楼主指正,是我没考虑周到,用了惯性思维去说明这个问题
"Start_Click表示为某个Name为Start的控件,被鼠标左键点击的时候触发",
这个是我写掉了,它确实是Start控件的点击事件.
但不一定要用鼠标触发,Click事件通常用于button按钮的点击事件,只要这个按钮被点击,该事件触发,通常是用鼠标左键点击(其实我并不是强调鼠标的关系),所以没有考虑周到,如果焦点在此按钮上的时候,用空格键也可以触发,当然也许还有其它方式.
2013-04-08 14:18
快速回复:C# 是如何运行的,我是刚介入C#的,是像MFC一样,通过消息机制来运行 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027859 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved