Tag: stream

使用OLEDB将AccessFile从Stream读取到DataSet

我使用Oledb读取AccessFile(.accdb)到DataSet,我不知道表名或列,常规实现是: public void GetAccessDB(string filepath){ this.ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source = ” + filepath; // get Table Names this.TableNames = new List(); using (System.Data.OleDb.OleDbConnection oledbConnection = new System.Data.OleDb.OleDbConnection(this.ConnectionString)) { oledbConnection.Open(); System.Data.DataTable dt = null; dt = oledbConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null); foreach (System.Data.DataRow row in dt.Rows) { string strSheetTableName = row[“TABLE_NAME”].ToString(); if (row[“TABLE_TYPE”].ToString() == “TABLE”) this.TableNames.Add(strSheetTableName); } oledbConnection.Close(); } […]

如何克隆MemoryStream对象?

我有一个MemoryStream对象,它由Stream类型参数传递 ( Stream是C#中的抽象类)。 我想克隆他,并创建另一个MemoryStream对象的一侧与原始的当前位置,并创建一个新的XMLReader ,所以我将能够阅读其内容。 这就是我做的,它不起作用(调试标有// * – > newReader有{None}值) 假设 :您在方法内部并具有Stream currentStream引用。 var x = new XmlReaderSettings(); x.IgnoreWhitespace = true; using (var newMemoryStream = new MemoryStream()) { stream.CopyTo(newMemoryStream); using (var newReader = XmlReader.Create(newMemoryStream,x)) //* { Doing some stuff… } }

是否可以检测客户端是否已关闭Stream?

情况简要概述: 我有一个服务,它接收信息并通过套接字发送回复。 连接是不安全的。 我想设置另一个可以为这些连接提供TLS的服务 – 这个新服务将提供单个端口并根据提供的客户端证书分发连接。 我不想使用stunnel有几个原因,一个是每个接收端口需要一个转发端口。 我目前正在尝试实施的解决方案: 本质上,我正在尝试将SslStream(传入)与NetworkStream耦合(传出 – 可能是一个Socket,但我将其放入NetworkStream以匹配传入)并将读取/写入操作链接到两者。 此链接将提供客户端(通过SSL / TLS)和服务(通过不安全的连接)之间的流程。 这是我提出的链接这些Streams的类: public class StreamConnector { public StreamConnector(Stream s1, Stream s2) { StreamConnectorState state1 = new StreamConnectorState(s1, s2); StreamConnectorState state2 = new StreamConnectorState(s2, s1); s1.BeginRead(state1.Buffer, 0, state1.Buffer.Length, new AsyncCallback(ReadCallback), state1); s2.BeginRead(state2.Buffer, 0, state2.Buffer.Length, new AsyncCallback(ReadCallback), state2); } private void ReadCallback(IAsyncResult result) { […]

从naudio.Wave.WaveIn到Stream?

我复制了这段代码,我不明白,但我知道它完成后它会做什么(输出 – sourceStream)… NAudio.Wave.WaveIn sourceStream = null; NAudio.Wave.DirectSoundOut waveOut = null; NAudio.Wave.WaveFileWriter waveWriter = null; sourceStream = new NAudio.Wave.WaveIn(); sourceStream.DeviceNumber = 2; sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(16000, NAudio.Wave.WaveIn.GetCapabilities(2).Channels); NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream); waveOut = new NAudio.Wave.DirectSoundOut(); waveOut.Init(waveIn); //sourceStream.DataAvailable. sourceStream.StartRecording(); waveOut.Play(); sourceStream.StopRecording(); 据我所知,此代码记录来自所选麦克风的声音并为其提供输出(sourceStream) 所以我需要的第一件事是 – >我如何从这段代码中获取流(喜欢而不是WaveIn a Stream [从WaveIn转换为Stream])? 请你们解释一下代码……我试过NAudio网站的解释,但我不明白 – >我是音频和流媒体的初学者……

如何通过容错来阅读无穷无尽的流

目前我正在开发一个应用程序,它从Twitter api读取流并将其解析为对象。 目前我读取了流并使用DataContractJsonSerializer中的ReadObject来创建我的对象。 这很棒!! 但是:我有点担心在我的程序赶上流程(互联网速度减慢或w / e)的情况下会发生什么,并且没有足够的数据来解析…该方法可能会引发exception,但我想等待新数据,然后重试相同的对象并继续。 此外,我想知道如何使方法更稳定,以防损坏的数据将进入流或类似的东西。 在此先感谢任何答案/想法:)

如何在Windows应用程序C#上播放YouTubevideo

我已经创建了一个带有WebBrowser控件的Windows应用程序并尝试播放YouTubevideo..我已经安装了Adobe Shockwave Player,并试图在我的Windows应用程序上观看video,但它没有显示任何video。 当我点击播放按钮时,屏幕看起来像这样 我播放video的代码是 StreamWriter sw = new StreamWriter(“utube.html”); string PlayString = currentVideoUrl.Trim().Replace(“watch?v=”, “v/”); string Finalplaycode = “”; sw.Write(Finalplaycode); sw.Close(); string PathToNavigate = Directory.GetParent(Application.ExecutablePath) + @”\utube.html”; webBrowser1.Navigate(PathToNavigate); 我的示例video链接是: http : //www.youtube.com/watch?v = oZdnezj9Dfg&feature = BF&list = PLD3E900BFF6534896 &lf = plpp_video 有谁可以帮我解决这个问题? 我错过了任何插件吗? 我正在使用.NetFramework 4.0

同时从同一个SslStream中读取?

我目前正在从SslStream中读取XML数据。 该流来自TcpClient对象。 using (XmlReader r = XmlReader.Create(sslStream, new XmlReaderSettings() { Async = true })) { while (await r.ReadAsync()) { ResetStream = false; switch (r.NodeType) { case XmlNodeType.XmlDeclaration: … break; case XmlNodeType.Element: … 另外,我想直接从TcpClient读取每个位和字节,无论它是否是XML数据。 如何两次读取相同的流? 是否可以使用XmlReader读取它并以某种方式转储流内容? 我想看看来自流的内容以及如何通过XmlReader解析它以进行调试。 更新: 我想保持一个流运行,而不是有两个独立的流。 由于我已经拥有了数据,因此在我的应用程序中将它再次存储在内存中是没有意义的。

IEnumerable 到Stream for FileStreamResult

我有一个IEnumerable ,它是一个方法的每个yield语句的“流”。 现在我想将此枚举转换为Stream以将其用作流式结果。 我有什么想法可以做到这一点? 我最终想要做的是从ASP.NET控制器操作返回Stream作为FileStreamResult 。 此结果应作为下载流式传输到客户端。 我不想做的是在返回结果之前将IEnumerable的全部内容写入流。 这将消除整个流媒体概念的意义。

OpenXML在写元素时挂起

我有一个程序,它基本上从数据库中提取数据,将其缓存到一个文件,然后将该数据导出为多种格式(Excel,Excel 2003,CSV)。 我正在使用OpenXML SDK 2.0来完成Excel工作。 这些导出过程并行运行(使用Parallel.ForEach ),数据量可能非常大 – 例如,某些CSV为800MB。 在这些较大的导出期间,我注意到XML文档的编写将会挂起。 例如,如果我有8个并行导出,那么在某些时候它们都会“暂停”。 它们都围绕着同一点: //this.Writer is an OpenXmlWriter which was created from a WorksheetPart. this.Writer.WriteElement(new Cell() { CellValue = new CellValue(value), DataType = CellValues.String }); 当发生这种情况时,我暂停调试器(在这种情况下是VS2013)并注意到所有线程都在代码的相同部分阻塞 – 有些在OpenXML SDK中更深一些 – 但它们都源于对OpenXmlWriter.WriteElement的调用。 我使用JustDecompile挖掘了源代码,但没有找到任何答案。 似乎正在使用中间流写入隔离存储,这由于某种原因阻塞。 每个基础流都是FileStream 。 这是一个屏幕截图,显示在OpenXmlWriter.WriteElement方法中或内部阻止的所有(在本例中为8个)并行任务: 其中一个挂起线程的完整堆栈 – 带注释。 WindowsBase.dll!MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName Normal WindowsBase.dll!MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName(int retryCount, out string fileName) WindowsBase.dll!MS.Internal.IO.Packaging.SparseMemoryStream.EnsureIsolatedStoreStream() […]

在SSH.NET中执行长时间命令并在TextBox中连续显示结果

有没有办法执行Linux命令并在PuTTY等Windows应用程序的文本框中显示结果。 例如,我正在尝试执行以下命令 wget http://centos-webpanel.com/cwp-latest sh cwp-latest 使用以下代码 SshClient sshclient = new SshClient(IPtxtBox.Text, UserNameTxt.Text, PasswordTxt.Text); sshclient.Connect(); ShellStream stream = sshclient.CreateShellStream(“customCommand”, 80, 24, 800, 600, 1024); resultTxt.Text = SSHCommand.SendCommand(stream, “wget http://centos-webpanel.com/cwp-latest && sh cwp-latest”); private static void WriteStream(string cmd, StreamWriter writer, ShellStream stream) { writer.WriteLine(cmd); while (stream.Length == 0) Thread.Sleep(500); } private static string ReadStream(StreamReader reader) { […]