Tag: 缓冲区

流stream = WriteableBitmap.PixelBuffer.AsStream()缺失

我正在写windows store app(8.1),我有样本(可能是win 8.0): private WriteableBitmap WriteableBitmap; … WriteableBitmap = new WriteableBitmap(500,500); … using (Stream stream = WriteableBitmap.PixelBuffer.AsStream()) { … } 所以我创建了新的win 8.1项目并尝试以同样的方式完成,但是当我到达时: using (Stream stream = WriteableBitmap.PixelBuffer.AsStream()) 我的项目不认识*.AsStream()方法,谁能告诉我为什么?

将分块数据从Socket接收到单个缓冲区

我正在尝试使用套接字编写一个简单的SNPP(简单网络分页协议)客户端。 除了服务器之间的小的不一致之外,一切似乎都运行良好。 当我发送命令时,我需要读取回复,这通常是一块数据。 但是,Sprint的SNPP服务器分两部分发送回复。 第一个数据块是状态代码的第一个数字。 第二个块是剩余部分。 例如,当我尝试接收“220 Gateway ready”回复时,它会像这样到达: 2 我必须发送另一个空命令来检索其余的: 20 Gateway ready 目前,我正在使用: byte[] buffer = new byte[256]; socket.Receive(buffer); 如何在发出命令后确保收到所有可用数据而不为每个数据块分配单独的缓冲区?

C#:FTP上传缓冲区大小

我已经去了FTP上传function,但有一些我想问的问题是缓冲区大小,我把它设置为20KB是什么意思,如果我增加/减少它会有什么不同吗? private void Upload(string filename) { FileInfo fi = new FileInfo(filename); FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(“ftp://” + textBox1.Text + “/” + Path.GetFileName(filename)); ftp.Credentials = new NetworkCredential(textBox2.Text, textBox3.Text); ftp.Method = WebRequestMethods.Ftp.UploadFile; ftp.UseBinary = true; ftp.KeepAlive = false; ftp.ContentLength = fi.Length; // The buffer size is set to 20kb int buffLength = 20480; byte[] buff = new byte[buffLength]; […]

C#将变量复制到缓冲区而不创建垃圾?

是否可以在C#.Net(3.5及更高版本)中将变量复制到byte []缓冲区而不在进程中创建任何垃圾? 例如: int variableToCopy = 9861; byte[] buffer = new byte[1024]; byte[] bytes = BitConverter.GetBytes(variableToCopy); Buffer.BlockCopy(bytes, 0, buffer, 0, 4); float anotherVariableToCopy = 6743897.6377f; bytes = BitConverter.GetBytes(anotherVariableToCopy); Buffer.BlockCopy(bytes, 0, buffer, 4, sizeof(float)); … 创建byte []字节中间对象,它变成垃圾(假设ref不再持有它)… 我想知道如果使用按位运算符,变量可以直接复制到缓冲区而不创建中间字节[]?

在.Net / C#播放音频

我是一位多年经验丰富的MFC程序员,近年来他一直在使用Objective C for Mac和iOS开发商业应用程序 – 我正在努力加快.Net和C#的速度(我很快就会这样做)需要将我的一个商业应用程序从Mac转换为PC)。 我现在已经完成了几本书,并且为了更熟悉.Net(和C#),我决定将我的一个非商业应用程序转换为.Net作为学习练习一切顺利(界面正常,数据结构都很好)但我需要能够播放音频。 我的Mac应用程序从一系列数学公式生成音频 – 想象一个波浪发生器 – 不完全相同但相似。 在Mac上我将音频生成为16位带符号的原始音频,使用Core Audio设置音频输出路由,然后在音频路由需要新的音频缓冲区时进行回调(因此我可以动态生成音频) 。 我需要在PC上做同样的事情。 不幸的是,我发现MSDN文档是“无法看到树木”的案例,因为有大量的文档。 我可以找到能让我加载和播放mp3 / wav等文件的类,但我需要实时生成音频。 任何人都可以指出我正确的方向找到一些东西,可以让我在播放时动态填充缓冲区吗? 谢谢

Threadsafe FIFO队列/缓冲区

我需要实现一种任务缓冲区。 基本要求是: 在单个后台线程中处理任务 从多个线程接收任务 处理所有收到的任务,即确保在收到停止信号后缓冲区的缓冲任务耗尽 必须保持每个线程接收的任务顺序 我正在考虑使用如下的队列来实现它。 希望得到有关实施的反馈。 还有其他更明智的想法来实现这样的事情吗? public class TestBuffer { private readonly object queueLock = new object(); private Queue queue = new Queue(); private bool running = false; public TestBuffer() { } public void start() { Thread t = new Thread(new ThreadStart(run)); t.Start(); } private void run() { running = true; bool […]

C#处理标准输出延迟

在C#表单中,我运行的进程启动信息类似于Redirect控制台输出到单独程序中的文本框和运行时的C#get进程输出 ,该进程正确运行 ,但输出需要很长时间才能出现在DataReceived事件中 。 我想在进程生成后立即看到文本; 根据Process标准输出无法捕获? (第一条评论)我需要等到事件被触发之前填充2到4 kb的缓冲区。 根据要求,这是代码: void pcs_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e) { if (!string.IsNullOrEmpty(e.Data)) textBox1.BeginInvoke((Action)delegate { textBox1.AppendText(text + “\n”); }); } private void LER_Go_Click(object sender, EventArgs e) { // variables LiDARExtRep contains the full path to an executable file // that runs in DOS and produces verbose output. // LER_Path.Text is the […]

如何设置Socket UDP下面的缓冲区大小? C#

正如我们所知道的UDP接收,我们使用Socket.ReceiveFrom或UdpClient.receive Socket.ReceiveFrom接受你的一个字节数组来放入udp数据。 UdpClient.receive直接返回数据所在的字节数组 我的问题是如何在Socket中设置缓冲区大小。 我认为操作系统维护自己的缓冲区来接收UDP数据,对吧? 例如,如果将udp数据包发送到我的机器,操作系统会将它放到缓冲区并等待我们进入Socket.ReceiveFrom或UdpClient.receive,对吧? 如何更改内部缓冲区的大小? 我尝试过Socket.ReceiveBuffSize,它对UDP没有任何影响,它清楚地说它是用于TCP窗口的。 此外,我做了很多实验,certificateSocket.ReceiveBufferSize不适用于UDP。 任何人都可以分享UDP内部缓冲区的一些见解??? 谢谢 我在这里看过一些post,例如, http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/c80ad765-b10f-4bca-917e-2959c9eb102a Dave说Socket.ReceiveBufferSize可以为UDP设置内部缓冲区。 我不同意。 我做的实验是这样的: 27台主机同时在局域网内向我发送一个10KB的udp数据包(至少差不多)。 我有一个while循环来处理每个数据包。 对于每个数据包,我创建一个处理它的线程。 我使用UdpClient或Socket接收数据包。 我丢失了大约50%的数据包。 我认为这是UDP发送的爆发,我无法及时处理所有这些。 这就是为什么我想增加UDP的缓冲区大小。 比方说,如果我将缓冲区大小更改为1MB,那么缓冲区中可以接受27 * 10KB = 270KB的数据,对吗? 我尝试将Socket.ReceiveBufferSize更改为许多值,它根本没有效果。 任何人都可以帮忙吗?

避免在Windows窗体中闪烁?

双缓冲无法使用combobox。 还有其他方法可以避免在Windows窗体中闪烁吗? 我有一个窗口forms,其中有多个面板。 我根据菜单选择一次只显示一个面板。 我有一个图标面板,一个标题面板和combobox。 基于该combobox的选定项目,gridview1和2正在填充。 当我使用键盘向下箭头快速选择combobox项目时,图标面板和标题面板总是重新绘制。 我需要保持这两点而不做任何改变。 当我改变combobox选择的索引时,这两个面板产生一些闪烁效果(即,它们闪烁或闪烁)。 有没有办法避免这种闪烁。 我尝试在表单构造函数和表单加载事件中启用双缓冲。 请帮忙………….. InitializeComponent(); this.SetStyle(ControlStyles.DoubleBuffer, true); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); this.SetStyle(ControlStyles.UserPaint, true); this.SetStyle(ControlStyles.SupportsTransparentBackColor, false); this.SetStyle(ControlStyles.Opaque, false); this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); this.SetStyle(ControlStyles.ResizeRedraw, true); 我在表单构造器和表单加载事件中尝试了此代码