C_Sharp 板


LINE

小弟是C#新手,有小段从网上找到的代码, 不过不太清楚是干嘛的,找了一堆关於委派及事件的资讯, 也没看过这样的写法,想请板友指导,谢谢。 mediaPlayer.EndReached += (sender, e) => { playFinished = true; }; --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.132.128.217
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1517479683.A.F41.html
1F:推 vi000246: 你都知道是委派跟事件了 为什麽会看不懂? 02/01 20:21
2F:→ testPtt: 就跟可视元件事件点两下填入playFinished = true;一样 02/01 20:25
3F:推 gn1943141: lambda 02/01 20:37
4F:推 lightyen: 订阅事件的一种简便写法 如果不需要取消订阅的话就能这 02/02 00:18
5F:→ lightyen: 样写 02/02 00:18
6F:→ lightyen: 缺点是sender,e在同一个域只能有一个 02/02 00:21
7F:→ lightyen: 可以另改名称: (a, b) => {...} 02/02 00:22
谢谢大家的回覆,只知道这看起来像callback function,但是没这样写过。 不好意思,有个部份想再请教一下… 其实代码主要是参考Vlc.Net,如下: --我是分隔线-- using System; using System.IO; using System.Threading; namespace ConsoleApp1 { class Program { static void Main(string[] args) { string libDirectory; if (IntPtr.Size == 4) { // Use 32 bits library libDirectory = Path.Combine(Environment.CurrentDirectory, "libvlc_x86"); } else { // Use 64 bits library libDirectory = Path.Combine(Environment.CurrentDirectory, "libvlc_x64"); } var options = new string[] { // VLC options can be given here. Please refer to the VLC command line documentation. }; var mediaPlayer = new Vlc.DotNet.Core.VlcMediaPlayer(new DirectoryInfo(libDirectory)); var mediaOptions = new string[] { ":sout=#file{dst="+Path.Combine(Environment.CurrentDirectory, "output.mov")+"}", ":sout-keep" }; mediaPlayer.SetMedia(new Uri("http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_h264.mov"), mediaOptions); bool playFinished = false; mediaPlayer.PositionChanged += (sender, e) => { Console.Write("\r" + Math.Floor(e.NewPosition * 100) + "%"); }; mediaPlayer.EncounteredError += (sender, e) => { Console.Error.Write("An error occurred"); playFinished = true; }; mediaPlayer.EndReached += (sender, e) => { playFinished = true; }; mediaPlayer.Play(); // Ugly, sorry, that's just an example... while(!playFinished) { Thread.Sleep(TimeSpan.FromMilliseconds(500)); } } } } --我是分隔线-- 问题1. mediaPlayer.PositionChanged += (sender, e) => 这个部份是先告知事件触发的话,就来执行事件委派的内容, 只是函式内容直接写在里面了? 问题2. 如上将Main的内容改为副程式,可能此副程式同时会被呼叫多次, 接收参数为一个识别字串,并建立Dictionary容器, key为识别字串,而value为mediaPlayer的实例, 请问这样会有问题吗? 因为副程式内的区域变数playFinished, 在副程式结束後就应该要消失了,不过不明白的是… 实际这麽做了後,程式能正常运行,主要是这点觉得奇怪。 以上两个重要观念问题再麻烦大家协助回覆哦,谢谢你们:) ※ 编辑: james999 (220.132.128.217), 02/05/2018 16:40:29







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP