相关疑难解决方法(0)

如何读取嵌入式资源文本文件

如何使用嵌入式资源(文本文件)StreamReader并将其作为字符串返回?我当前的脚本使用Windows窗体和文本框,允许用户查找和替换未嵌入的文本文件中的文本.

private void button1_Click(object sender, EventArgs e)
{
    StringCollection strValuesToSearch = new StringCollection();
    strValuesToSearch.Add("Apple");
    string stringToReplace;
    stringToReplace = textBox1.Text;

    StreamReader FileReader = new StreamReader(@"C:\MyFile.txt");
    string FileContents;
    FileContents = FileReader.ReadToEnd();
    FileReader.Close();
    foreach (string s in strValuesToSearch)
    {
        if (FileContents.Contains(s))
            FileContents = FileContents.Replace(s, stringToReplace);
    }
    StreamWriter FileWriter = new StreamWriter(@"MyFile.txt");
    FileWriter.Write(FileContents);
    FileWriter.Close();
}
Run Code Online (Sandbox Code Playgroud)

.net streamreader embedded-resource

643
推荐指数
12
解决办法
53万
查看次数

是.Disposing StreamWriter关闭底层流?

StreamWriter.Close()表示它还会关闭StreamWriter的底层流.那么StreamWriter.Dispose呢?Dispose是否也处置和/或关闭底层流

.net c#

51
推荐指数
4
解决办法
2万
查看次数

使用语句FileStream和/或StreamReader - Visual Studio 2012警告

新的Visual Studio 2012抱怨我一直使用的常见代码组合.我知道这似乎有点矫枉过正,但我​​在我的代码中做了以下'只是为了确定'.

using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    using (var sr = new StreamReader(fs))
    {
        // Code here
    }
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio正警告我,我不止一次处理fs.所以我的问题是这样,写这个的正确方法是:

using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    var sr = new StreamReader(fs);
    // do stuff here
}
Run Code Online (Sandbox Code Playgroud)

或者我应该这样做(或者没有提到的其他变体).

var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

using (var sr = new StreamReader(fs))
{
    // Code here
}
Run Code Online (Sandbox Code Playgroud)

我在StackOverflow中搜索了几个问题,但没有找到直接解决此组合的最佳实践的问题.

谢谢!

.net c# dispose using visual-studio-2012

38
推荐指数
3
解决办法
6万
查看次数

如何在asp net core 2.2中间件中多次读取请求正文?

我试过这个: 读取请求正文两次 ,这个:https : //github.com/aspnet/Mvc/issues/4962 但没有用。我这样阅读请求正文:

app.Use(async (context, next) =>
{
    var requestBody = await ReadStream(context.Request.Body);
    var requestPath = context.Request.Path.ToString();
    //Do some thing

    await next.Invoke();

    var responseStatusCode = context.Response.StatusCode;
    //Do some other thing
});

private async Task<string> ReadStream(Stream stream)
{
    using (var streamReader = new StreamReader(stream))
    {
        var result = await streamReader.ReadToEndAsync();

        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

在控制器中,我得到“处置对象”或“空流”。

c# middleware asp.net-core-2.2

11
推荐指数
2
解决办法
1万
查看次数

代码分析规则CA2000/CA2202

我正在努力确保我的编码遵循正确的对象处理方式,因此我将这些规则强制执行为错误.但我在使用这段代码时遇到了麻烦

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;

class MyClass
{  
    public String ToXml()
    {
        var objSerializer = 
            new DataContractSerializer(GetType());
        var objStream = new MemoryStream();
        StreamReader objReader;

        String strResult;
        try
        {
            // Serialize the object
            objSerializer.WriteObject(objStream, this);

            // Move to start of stream to read out contents
            objStream.Seek(0, SeekOrigin.Begin);

            objReader = new StreamReader(objStream);

            try
            {
                // Read Contents into a string
                strResult = objReader.ReadToEnd();
            }
            finally
            {
                objReader.Dispose();
            }
        }
        finally
        {
            if (objStream != null)
            {
                // objStream.Dispose(); …
Run Code Online (Sandbox Code Playgroud)

c# code-analysis stylecop

6
推荐指数
1
解决办法
1754
查看次数

使用use来处理嵌套对象

如果我有这样的嵌套对象的代码,我是否需要使用嵌套的using语句来确保SQLCommand和SQLConnection对象都正确处理,如下所示,或者如果实例化SQLCommand的代码在外部使用声明.

using (var conn = new SqlConnection(sqlConnString))
{
    using (var cmd = new SqlCommand())
    {
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = cmdTextHere;
        conn.Open();

        cmd.Connection = conn;
        rowsAffected = cmd.ExecuteNonQuery();
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# garbage-collection idisposable

5
推荐指数
2
解决办法
1535
查看次数

为什么我不鼓励不止一次调用Dispose()?

这个问题描述了与CA2202相同的场景,如何解决这种情况,但它不是关于如何修复代码,而是关于为什么首先出现问题.

以下代码:

using (Stream stream = obtainStreamObject())
{
    using (var reader = new XmlTextReader(stream))
    {
        //do something with XmlTextReader
    }
}
Run Code Online (Sandbox Code Playgroud)

原因Stream.Dispose()叫两次.首先,内部using块会崩溃,这会调用XmlTextReader.Dispose()哪些调用Stream.Dispose().然后外部using块崩溃并Stream.Dispose()再次被调用.

所以,我必须换Streamusing,但不换行XmlTextReaderusing,尽管他们都实现IDisposable.

这会产生CA2202警告

不要多次处理对象对象'stream'可以在方法'MethodName(whatever)'中多次处理.为避免生成System.ObjectDisposedException,不应在对象上多次调用Dispose.

好吧,它说第二个Dispose()可能会屈服ObjectDisposedException.这有什么意义?为什么我会这样实现Dispose(),当它第二次被调用它会抛出异常而不是什么都不做?

.net c# code-analysis idisposable using-statement

5
推荐指数
0
解决办法
414
查看次数

在vb.net中提供textfieldparser的字符串

在我问之前我只是想说我已经看了这个,我只是想不出来.
所以我有一个Web调用返回一个我需要拆分的令人难以置信的长字符串.我想使用textfieldparser,但我不想将此字符串保存为文件,textfieldparser似乎是关于文件或...流,我不理解流.那么我如何将字符串输入到此?我可以将它转换为流吗?我意识到这可能非常简单,所以我为我的无知而道歉.

非常感谢您的帮助!

vb.net string stream

4
推荐指数
1
解决办法
3522
查看次数

"使用"是否也处理在构造函数中创建的对象?

当创建一个实现一个元素IDisposable,Dispose()是在结束所谓的using块还,如果抛出一个异常,如果我是正确的.

但是,在ClassB一次性元素的构造函数中创建新元素时,如果IDisposable实现了ClassB的对象,是否也会被处置?

using (ClassA a = new ClassA(new ClassB()))
{
}
Run Code Online (Sandbox Code Playgroud)

这可能适用于与之相关的类Stream.但是,这一般适用吗?

.net c# idisposable using-statement

0
推荐指数
1
解决办法
470
查看次数