草庐IT

应不应该

全部标签

c# - 我应该在每个等待的操作上调用 ConfigureAwait(false)

我读了这篇文章https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html-但是我看到了一个矛盾:我知道UI线程死锁的问题,因为UI线程阻塞等待异步操作完成,但相同的异步操作同步到UI线程上下文-因此异步操作无法进入UI线程,因此UI线程不会停止等待。文章告诉我们解决方法是不要在UI线程上阻塞,否则您需要使用ConfigureAwait(false)everywhere:Youwouldhavetouseforeveryawaitinthetransitiveclosureofallmethodscalledb

c# - 我应该如何从屏幕空间坐标转换为 WinForms PictureBox 中的图像空间坐标?

我有一个在Windows窗体PictureBox控件中显示图像的应用程序。控件的SizeMode设置为Zoom,这样PictureBox中包含的图像将以纵横比正确的方式显示,而不管PictureBox的尺寸。这对于应用程序的视觉外观非常有用,因为您可以根据需要调整窗口大小,并且图像将始终以最适合的方式显示。不幸的是,我还需要处理图片框上的鼠标点击事件,并且需要能够从屏幕空间坐标转换为图像空间坐标。看起来很容易从屏幕空间转换到控制空间,但我没有看到任何明显的方法从控制空间转换到图像空间(即在图片中缩放的源图像中的像素坐标框)。有没有一种简单的方法可以做到这一点,还是我应该复制他们在内部使

c# - 我应该为每个 Paint 请求创建新的 Pens/Brush 还是在整个应用程序生命周期中保留它们?

我有一个可以大量绘图的应用程序,我们假设它是一个类似Viso的应用程序。它的对象具有多个绘制的子对象,可以连接事物、调整大小等。目前,当我在特定的子对象或对象上调用绘画时,我会执行以下操作:using(varpen=newPen(this.ForeColor)){//Paintforthisobject.}我读过相互矛盾的答案,认为应该为不断绘制相同内容(可能只是调整大小、移动等)的应用程序完成此操作。我应该将Pen/Brush与对象一起存储,然后在处理应用程序时将它们全部处理掉,还是它们的效率足以为每个绘制调用创建/处理(请记住,这是一个图形密集型应用程序)。编辑:已经有两个答案相互

c# - 我应该如何编写 XML 注释以避免在摘要和返回标记之间重复自己?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion当方法的目的是计算一个值并返回它时,我发现自己将其记录如下://////Calculatesthewidgetcount.//////Thecontroltocalculatethewidgetcountof.///Thewidgetcount.这里的returns标签没有提供任何新信息:它只是重复summary中的内容。(异常(exception)是返回bool的方法,其中很容易解释tr

c# - TransactionScope TransactionAborted 异常 - 事务未回滚。应该吗?

(SQL服务器2008)如果在TransactionScope(.Complete())中发生事务超时错误,您是否希望事务回滚?更新:错误实际上是在右大括号中抛出的(即.Dispose()),而不是.Complete()。完整错误是:Thetransactionhasaborted.System.Transactions.TransactionAbortedExceptionTransactionAbortedExceptionSystem.Transactions.TransactionAbortedException:Thetransactionhasaborted.--->Sys

c# - 在 .Net 中,出于性能原因,我什么时候应该通过引用传递结构?

在我的C#应用程序中,我有一个很大的结构(176字节),它每秒可能被传递给一个函数十万次。这个函数然后简单地获取一个指向结构的指针并将指针传递给非托管代码。函数和非托管代码都不会对该结构进行任何修改。我的问题是,我应该按值还是按引用将结构传递给函数?在这种特殊情况下,我的猜测是通过引用传递比将176个字节压入调用堆栈要快得多,除非JIT碰巧认识到该结构从未被修改(我的猜测是它无法识别这一点,因为该结构的地址传递给非托管代码)并优化代码。既然已经到了,我们还要回答更一般的情况,即函数不将结构的指针传递给非托管代码,而是对结构的内容执行一些只读操作结构。通过引用传递结构会更快吗?在这种情况

c# - 使用 FileStream.ReadAsync() 时,我应该以异步模式打开文件吗?

为FileStream执行异步I/O的旧.Net方法是使用FileStream.BeginRead()和FileStream.EndRead().FileStream.BeginRead()的MSDN文档指出:FileStreamprovidestwodifferentmodesofoperation:synchronousI/OandasynchronousI/O.Whileeithercanbeused,theunderlyingoperatingsystemresourcesmightallowaccessinonlyoneofthesemodes.Bydefault,FileS

c# - 什么时候应该使用 C# 索引器?

我想更多地使用索引器,但我不确定何时使用它们。我在网上找到的所有示例都是使用MyClass和IndexerClass类的示例。在有学生和教师的学校系统中,每个教师都有一个他们负责的学生列表-在这种情况下是否需要索引器?为简单起见:每个学生只能属于一个教师。 最佳答案 Indexer是一个高度特化的属性,它允许类(或结构)的实例像数组一样被索引(属性可以是静态的,但索引器不能)。为什么要使用索引器:类本身就是一个数据结构,而不是一个新的数据结构。简化语法——语法糖何时使用:如果您的类需要其实例的列表(/数组)(示例1)如果您的类表示与

c# - '无法加载文件或程序集 'netstandard, Version=2.0.0.0, ...'。不应加载引用程序集以执行

目标:从.NET4.7控制台应用程序,通过Assembly.GetType()使用反射,我尝试从AssemblyX中提取netstandard2.0类的类型。然后我想使用Activator.CreateInstance()创建该类型的实例。我正在尝试做的事情:但是,此程序集X依赖于netstandard2.0。为了能够获取类型,必须将netstandard依赖项加载到AppDomain中。这就是为什么当AppDomain通过AssemblyResolve事件请求netstandard程序集时,我只是像这样加载dll:varnetStandardDllPath=@"C:\Users\xx

c# - 我应该将 StringContent 类用于什么目的?

有StringContentclass在System.Net.Http命名空间中。我应该将StringContent类用于什么目的? 最佳答案 StringContent类创建适合http服务器/客户端通信的格式化文本。客户端请求后,服务器将使用HttpResponseMessage进行响应,并且该响应将需要一个内容,该内容可以使用StringContent类创建。例子:stringcsv="contenthere";varresponse=newHttpResponseMessage();response.Content=newS