标签: using-statement

应使用USING语句的案例列表

"文件和字体是访问非托管资源的托管类型的示例(在本例中为文件句柄和设备上下文).还有许多其他类型的非托管资源和类库类型封装它们.所有这些类型都必须实现IDisposable接口.一个规则,当你使用IDisposable对象时,你应该在using语句中声明并实例化它." - MSDN

是否有这样的案例列表(访问非托管资源的托管类型,如FILE和FONT,......)应该使用USING语句?

.net idisposable using-statement unmanagedresources

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

c ++中的/ clr选项

有人可以帮我找到以下错误的解决方案:

"致命错误C1190:托管目标代码需要'/ clr'选项"

我的配置是......

  • Visual Studio 2008
  • Windows 7的

这是代码(我通过使用网络资源获得)

#using <mscorlib.dll>
using namespace System;
using namespace System::IO;

int main() {
    // Create a reference to the current directory.
    DirectoryInfo* di = new DirectoryInfo(Environment::CurrentDirectory);
    // Create an array representing the files in the current directory.
    FileInfo* fi[] = di->GetFiles();
    Console::WriteLine(S"The following files exist in the current directory:");
    // Print out the names of the files in the current directory.
    Collections::IEnumerator* myEnum = fi->GetEnumerator();
    while (myEnum->MoveNext()) {
        FileInfo* fiTemp = __try_cast<FileInfo*>(myEnum->Current); …
Run Code Online (Sandbox Code Playgroud)

clr using-statement directoryinfo visual-studio-2008 windows-7

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

我可以在这个片段中以某种方式用using块替换Initialize()和Close()方法调用吗?

你有没有办法建议帮助摆脱调用Initialize()和Close()方法并将其替换为使用块?

或者这种方法完全没问题?

(想法是确保当FooWriter的消费者写下一些字符串并完成此操作时将处理Writer.)

class Program
    {
        static void Main(string[] args)
        {
            var writer  = new FooWriter();

            writer.Initialize();

            foreach (var s in args)
                writer.Write(s);

            writer.Cose();
    }


public class FooWriter
{

    public StreamWriter Writer;

    public void Initialize()
    {
        Writer = new StreamWriter("MyFile.txt", false);
    }

    public void Write(string line)
    {
        if(Writer==null)
            throw new NullReferenceException(Writer, "Writer"); // Guard Writer

        Writer.WriteLine(line);
    }

    public void Close()
    {
        Writer.Dispose();
    }

}
Run Code Online (Sandbox Code Playgroud)

.net c# idisposable using-statement streamwriter

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

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

当创建一个实现一个元素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
查看次数

using(IDisposable)vs class field - 正确使用ReaderWriterLockSlim

FileWriter将由不同线程使用的类中,我当前使用a ReaderWriterLockSlim来防止当两个线程同时尝试写入文件时发生的错误,如下所示:

(1)

public class FileWriter
{
    private ReaderWriterLockSlim readerWriterLock = new ReaderWriterLockSlim();

    public void WriteToFile(string message)
    {
        try
        {
            this.readerWriterLock.EnterWriteLock();    
            // the writing happens here
        }
        finally
        {
            this.readerWriterLockSlim.ExitWriteLock();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个确实有效.但在那之后,我读了那个ReaderWriterLockSlim工具IDisposable,所以我想知道是否

(2)

public class FileWriter
{
    public void WriteToFile(string message)
    {
        using (ReaderWriterLockSlim readerWriterLockSlim = new ReaderWriterLockSlim())
        {
            readerWriterLockSlim.EnterWriteLock();
            // the writing happens here
            readerWriterLockSlim.ExitWriteLock();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

将是"更好"的方法,是否会引入一些新的缺点.我的直觉告诉我,每次调用该方法我可能不应该创建一个新的ReaderWriterLockSlim,而只是一次(2) …

c# using-statement readerwriterlockslim

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

我使用 MongoDB C# 驱动程序 FindAsync 的方式是否有缺陷?

对于 C# 来说还是比较陌生。我的代码给了我想要的结果,但我不确定我是否以正确的方式实现了它。如果您想回答,请详细说明。我的目标是通过 搜索我的 MongoDB 中的条目FindAsync。这是我的代码:

public async Task<List<T>> SearchDocAsync<T, U>(string collection,
    string findFieldName, U findValue)
{
    var _collection = db.GetCollection<T>(collection);
    var filter = Builders<T>.Filter.Eq(findFieldName, findValue);
    var result = await (_collection.FindAsync(filter).Result.ToListAsync());
    return result;
}
Run Code Online (Sandbox Code Playgroud)

这是我在 WinForms 中的调用方式:

private async void BtnReadAll_Click(object sender, EventArgs e)
{
    var asyncResults = await myMongoAux.SearchDocAsync<MyTModel, string>(
        myCollectionName, "MyDBString", "TestString");
    foreach (var r in asyncResults)
    {
        RtxbxResult.Text += $"{r.MyDBInt}\t{r.MyDBString}\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

这安全吗?我不应该使用 a using(但如何使用)?我读过一些关于你应该使用的内容:

配置等待(假)

如何以及为何?

非常友善,帮助我了解更多。感谢您的时间。:)

c# using-statement winforms async-await mongodb-.net-driver

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

不使用 using 语句处理 IDisposable 对象

IDisposable我确信这是一个简单的问题,但是在没有 using 语句的情况下处理对象时我应该做什么?

c# idisposable using-statement

-1
推荐指数
1
解决办法
1572
查看次数

在用户定义的类中使用C#using关键字

每个人都知道在我们想要清理非托管资源时使用using关键字.

如果该类实现,IDisposable那么我们可以使用using该类对象的关键字.但是如果我想在using我自己的类的对象中使用关键字,那么我该如何使用它.

如果我必须IDisposable在我自己的类中实现,那么我还必须在我的类中编写其Dispose()方法的代码.using当我在Dispose()方法中编写自己的代码时,没有必要在这里使用关键字.那么我如何在用户定义的类型(如类和结构)中使用.

请举一些例子说明.

c# using-statement

-2
推荐指数
1
解决办法
1451
查看次数

在c#中使用ensure有什么用?

我读了这篇文档,但我仍然感到困惑.

using (Font font1 = new Font("Arial", 10.0f)) 
{
    byte charset = font1.GdiCharSet;
}
Run Code Online (Sandbox Code Playgroud)

在代码中,是否意味着我们引入了一个名为Font类的新实例font1.但是,此实例仅在大括号内存活.在代码中我们可以再次实例化,font1但这将是一个完全不同的实例,因为前一个font1disposed.

它是否正确?那么目的是什么?我们可以重新分配不同的值font1而不处理前一个值?

c# using-statement

-2
推荐指数
1
解决办法
280
查看次数