Icecast 2:协议描述,使用C#流式传输

我需要编写一个Icecast 2客户端,它能够将来自计算机的音频(mp3文件,声卡录音等)传输到服务器。 我决定在C#上写这样一个客户端。 两个问题: 1)了解我可能/应该/必须使用的通用指南(最佳实践,可能是技巧)非常有用,以便在C#中无缝地处理流式音频(当然是通过网络流式传输)。 一些关于TCP / IP流通用的一般技术文档,特别是ICY,关于应用程序整体架构的建议和注释将非常受欢迎。 2)是否有关于Icecast 2流媒体协议的良好文档? 我无法在Icecast的官方网站上找到这些文档。 我不想直接从它的源代码中提取协议描述。 如果协议真的很简单,那么有人可以在这里提供它的摘要吗?

没有使用generics扩展方法的类型推断

我有以下方法: public static TEventInvocatorParameters Until (this TEventInvocatorParameters p, Func breakCond) where TEventInvocatorParameters : EventInvocatorParameters where TEventArgs : EventArgs { p.BreakCondition = breakCond; return p; } 而这堂课 public class EventInvocatorParameters where T : EventArgs { public Func BreakCondition { get; set; } // Other properties used below omitted for brevity. } 现在,我有以下问题: 此扩展方法显示所有类型,甚至是string 。 我不能写new EventInvocatorParameters(EventABC).Until(e […]

OleDbParameters和参数名称

我有一个SQL语句,我正在通过OleDb执行,语句是这样的: INSERT INTO mytable (name, dept) VALUES (@name, @dept); 我正在向OleDbCommand添加参数,如下所示: OleDbCommand Command = new OleDbCommand(); Command.Connection = Connection; OleDbParameter Parameter1 = new OleDbParameter(); Parameter1.OleDbType = OleDbType.VarChar; Parameter1.ParamterName = “@name”; Parameter1.Value = “Bob”; OleDbParameter Parameter2 = new OleDbParameter(); Parameter2.OleDbType = OleDbType.VarChar; Parameter2.ParamterName = “@dept”; Parameter2.Value = “ADept”; Command.Parameters.Add(Parameter1); Command.Parameters.Add(Parameter2); 我得到的问题是,如果我添加参数以反过来命令,那么列将填充错误的值(即名称在dept列中,反之亦然) Command.Parameters.Add(Parameter2); Command.Parameters.Add(Parameter1); 我的问题是,如果参数值只是按照添加命令的顺序插入到表中,参数名称的重点是什么? 参数名称似乎多余?

快速将Bitmap转换为BitmapSource wpf

我需要在30Hz处在Image组件上绘制图像。 我用这个代码: public MainWindow() { InitializeComponent(); Messenger.Default.Register(this, (bmp) => { ImageTarget.Dispatcher.BeginInvoke((Action)(() => { var hBitmap = bmp.GetHbitmap(); var drawable = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); DeleteObject(hBitmap); ImageTarget.Source = drawable; })); }); } 问题是,使用此代码,我的CPU使用率约为80%,如果没有转换,则大约为6%。 那么为什么转换位图这么长? 是否有更快的方法(使用不安全的代码)?

项目构建但无法发布

我有一个MVC项目,由于一个众所周知的原因拒绝发布到PC中的本地文件夹。 日志说明如下: 3>—— Publish started: Project: Admin, Configuration: Release Any CPU —— 3>Connecting to D:\Deploys… 3>Project “Admin.csproj” (GatherAllFilesToPublish target(s)): 3> Building with tools version “14.0”. 3> Target “ValidateMSBuildToolsVersion” skipped. Previously built unsuccessfully. 3>Done building project “Admin.csproj” — FAILED. 3> ========== Build: 2 succeeded, 0 failed, 1 up-to-date, 0 skipped ========== ========== Publish: 0 succeeded, 1 […]

Windows服务未显示在控制面板下添加删除程序

我安装了我的Windows服务(服务名称:测试服务) Windows 7计算机中的.NET Framework(:\ Windows \ Microsoft.NET \ FrameWork64 \ v4)中存在InstallUtil.exe。 我可以在服务控制台下看到我的服务。 但是,我去控制面板的程序和function手动卸载相同的服务,我没有在程序和function下看到我的服务? 有什么想法为什么服务不会显示,这样,用户可以卸载它? 我也检查了显示隐藏文件,但仍未显示服务?

如何从SQL Server中的存储过程检索参数列表

使用C#和System.Data.SqlClient,有没有办法在实际执行之前检索属于SQL Server上的存储过程的参数列表? 我有一个“多环境”场景,其中有相同数据库架构的多个版本。 环境的示例可以是“开发”,“分段”和“生产”。 “开发”将有一个版本的存储过程,“Staging”将有另一个版本。 我想要做的就是在传递一个值并调用存储过程之前validation参数是否存在。 避免使用SqlException而不是必须捕获它对我来说是一个加分。 约书亚

C#中的前后增量

关于C#编译器如何处理前后增量和减量,我有点困惑。 当我编写以下代码时: int x = 4; x = x++ + ++x; x将具有值10。 我认为这是因为预增量将x设置为5 ,这使得5+5计算结果为10 。 然后后增量将x更新为6 ,但不会使用该值,因为10将分配给x 。 但是当我编码: int x = 4; x = x– – –x; 之后x将是2 。 任何人都可以解释为什么会这样吗?

如何实现从非托管DLL到.net应用程序的回调接口?

在我的下一个项目中,我想为C ++中已有的代码实现GUI。 我的计划是将C ++部分包装在DLL中并在C#中实现GUI。 我的问题是我不知道如何实现从非托管DLL到manged C#代码的回调。 我已经在C#中做了一些开发,但是托管和非托管代码之间的接口对我来说是新的。 任何人都可以给我一些提示或阅读提示或一个简单的例子从一开始? 不幸的是,我找不到任何有用的东西。

如何在尽可能短的时间内插入1000万条记录?

我有一个文件(有1000万条记录),如下所示: line1 line2 line3 line4 ……. …… 10 million lines 所以基本上我想在数据库中插入1000万条记录。 所以我读了文件并将其上传到SQL Server。 C#代码 System.IO.StreamReader file = new System.IO.StreamReader(@”c:\test.txt”); while((line = file.ReadLine()) != null) { // insertion code goes here //DAL.ExecuteSql(“insert into table1 values(“+line+”)”); } file.Close(); 但插入需要很长时间。 如何使用C#在尽可能短的时间内插入1000万条记录? 更新1: 批量插入: BULK INSERT DBNAME.dbo.DATAs FROM ‘F:\dt10000000\dt10000000.txt’ WITH ( ROWTERMINATOR =’ \n’ ); 我的表如下: DATAs ( DatasField […]