Tag:

FileStream的同步要求。(开始/结束)(读/写)

.Net FileStream是否可以接受以下multithreading调用模式? 几个线程调用这样的方法: ulong offset = whatever; // different for each thread byte[] buffer = new byte[8192]; object state = someState; // unique for each call, hence also for each thread lock(theFile) { theFile.Seek(whatever, SeekOrigin.Begin); IAsyncResult result = theFile.BeginRead(buffer, 0, 8192, AcceptResults, state); } if(result.CompletedSynchronously) { // is it required for us to call AcceptResults […]

为工作流应用程序推荐设计模式

我正在开发一个用户可以执行任务/工作流的应用程序。 每个任务都由要执行的操作队列组成。 我希望能够在工作流程启动后能够输入用户。 例: 任务开始 Action1启动 Action1结束 Action2启动 Action2结束 Action3需要用户输入(UI打开窗口以获取用户输入) Action3获取用户输入 Action3开始了 Action3结束 任务结束 我正在开发这个C#,我知道Workflow Foundation和C#中的任务。 它们可能有我需要的东西,但我也有兴趣听到从头开始这样做的设计模式。

将大字符串写入文件的最佳方法

在C#中,我正在读取中等大小的文件(100 KB~1 MB),修改内容的某些部分,最后写入不同的文件。 所有内容都是文字。 修改是作为字符串对象和字符串操作完成的。 我目前的做法是: 使用StreamReader读取原始文件中的每一行。 打开StringBuilder以获取新文件的内容。 修改字符串对象并调用StringBuilder AppendLine (直到文件末尾) 打开一个新的StreamWriter ,并将StringBuilder写入写入流。 但是,我发现StremWriter.Write截断32768字节(2 ^ 16),但StringBuilder的长度大StremWriter.Write 。 我可以编写一个简单的循环来保证整个字符串到文件。 但是,我想知道在执行此任务时C#中最有效的方法是什么? 总而言之,我只想修改文本文件的某些部分并写入不同的文件。 但是,文本文件大小可能大于32768字节。 ==答案==我很抱歉让你烦恼! 只是我没有打电话给flush 。 StremWriter.Write没有短(例如,2 ^ 16)限制。

返回由Image.FromStream(Stream stream)方法创建的图像

我有这个函数在函数中返回一个Image,使用Image.FromStream方法创建图像根据MSDN : 您必须在图像的生命周期内保持流打开 所以我没有关闭流(如果我关闭了蒸汽,则从返回的图像对象中抛出GDI +exception)。 我的问题是当在返回的Image上的其他地方调用Image.Dispose()时是否关闭/处理流 public static Image GetImage(byte[] buffer, int offset, int count) { var memoryStream = new MemoryStream(buffer, offset, count); return Image.FromStream(memoryStream); } 正如其中一个答案中所建议的那样, 使用不是可行的方法,因为它会引发exception: public static Image GetImage(byte[] buffer, int offset, int count) { using(var memoryStream = new MemoryStream(buffer, offset, count)) { return Image.FromStream(memoryStream); } } public static void Main() { […]

从http地址读取XML文件

我需要使用c#/ .net从类似的源读取一个xml文件: https://10.1.12.15/xmldata?item=all : https://10.1.12.15/xmldata?item=all 这基本上只是一个xml文件。 StreamReader不喜欢这样。 阅读该链接内容的最佳方式是什么? 该文件看起来像这样: – – CZ325000123 ProLiant DL380p Gen8 BBBBBBGGGGHHHJJJJ 1 0000-000-222-22222-333333333333 – …

模拟在服务器路径上进行模拟的用户权限是什么?

我使用下面的示例,但我仍然有例外: System.Security.Permissions.SecurityPermission 下面是技术支持人员的诊断信息:请求类型’System.Security.Permissions.SecurityPermission,mscorlib的权限 Admin表示用户凭证具有读写的完全权限 IntPtr userToken = IntPtr.Zero; bool success = External.LogonUser( “userID”, “domain.com”, “MyPassword”, (int) AdvApi32Utility.LogonType.LOGON32_LOGON_INTERACTIVE, //2 (int) AdvApi32Utility.LogonProvider.LOGON32_PROVIDER_DEFAULT, //0 out userToken); if (!success) { throw new SecurityException(“Logon user failed”); } using (WindowsIdentity.Impersonate(userToken)) { //Create a new GUID, extract the extension and create a new unique filename string strFileGUID = System.Guid.NewGuid().ToString(); string extension = […]

ACM Stream转换exception显示AcmNotPossible

当从服务器解压缩Mp3的帧时,在Mp3播放10到15秒时发生上述exception。我的应用程序是客户端/服务器应用程序。我通过编写Mp3数据包并通过网络流序列化来发送Mp3帧。我使用NAudio Open Source API来压缩和解压缩帧并播放Mp3.I使用Stack Trace获得以下exception。 NAudio.MmException.Try(MmResult结果,字符串函数) at NAudio.Wave.Compression.AcmStreamHeader.Convert(Int32 bytesToConvert,Int32&sourceBytesConverted) at NAudio.Wave.Compression.AcmStream.Convert(Int32 bytesToConvert,Int32&sourceBytesConverted) 在NAudio.Wave.AcmMp3FrameDecompressor.DecompressFrame(Mp3Frame帧,Byte [] dest,Int32 destOffset) 在Client.Audio.SoundPlayer.StreamMP3(对象状态)

c#通过socket发送图像和posibble一样快

你好我们试图尽可能快地发送套接字试图压缩… comapre图像…它仍然工作很慢…顺便说一下我试图在压缩之前和之后保存图像和大小是相同的…. 1或2 kb les … 看看客户端代码: Bitmap pre; private void Form2_Load(object sender, EventArgs e) { pre = GetDesktopImage(); prev = Compress(ImageToByte(pre)).Length; theThread = new Thread(new ThreadStart(startSend)); theThread.Start(); } Bitmap curr; byte[] compressed; private void startSend() { sck = client.Client; s = new NetworkStream(sck); while (true) { curr = GetDesktopImage(); compressed = Compress(ImageToByte(curr)); if (Math.Abs(compressed.Length […]

关于MemoryStream编写的OutOfMemoryException

我有一个小样本应用程序我正在努力尝试获得一些新的.Net 4.0 Parallel Extensions(它们非常好)。 我遇到了OutOfMemoryException的(可能真的很愚蠢)问题。 我想要将这个样本插入读取一些数据和大量文件的主要应用程序,对它们进行一些处理,然后将它们写出来。 我遇到了一些问题,文件变得越来越大(可能是GB),并担心内存,所以我想并行化导致我走这条道路的事情。 现在下面的代码在较小的文件上得到了OOME,我想我只是遗漏了一些东西。 它将读入10-15个文件并很好地将它们写在parellel中,但随后它会在下一个文件中窒息。 看起来它的读写速度约为650MB。 第二组眼睛将不胜感激。 我正在从FileStream读取MemorySteam,因为这是主应用程序所需要的,我只是想在某种程度上复制它。 它从所有类型的地方读取数据和文件,并作为MemoryStreams处理它们。 这是使用.Net 4.0 Beta 2,VS 2010。 namespace ParellelJob { class Program { BlockingCollection serviceToSolutionShare; static void Main(string[] args) { Program p = new Program(); p.serviceToSolutionShare = new BlockingCollection(); ServiceStage svc = new ServiceStage(ref p.serviceToSolutionShare); SolutionStage sol = new SolutionStage(ref p.serviceToSolutionShare); var svcTask = […]

如何在Xamarin for Android中压缩文件?

我有一个函数创建一个zip文件传递的文件的字符串数组。 该函数确实成功创建了zip文件及其中的zip条目文件,但这些zip条目文件为空。 我尝试了几种不同的方法 – 下面的function代码是我最接近工作的东西: public static bool ZipFile(string[] arrFiles, string sZipToDirectory, string sZipFileName) { if (Directory.Exists(sZipToDirectory)) { FileStream fNewZipFileStream; ZipOutputStream zos; try { fNewZipFileStream = File.Create(sZipToDirectory + sZipFileName); zos = new ZipOutputStream(fNewZipFileStream); for (int i = 0; i < arrFiles.Length; i++) { ZipEntry entry = new ZipEntry(arrFiles[i].Substring(arrFiles[i].LastIndexOf("/") + 1)); zos.PutNextEntry(entry); FileStream fStream = File.OpenRead(arrFiles[i]); […]