我有一个里面有静态字段的库.我想创建一个应用程序并引用这个库,所以我有两个这个静态字段的实例..Net运行时不允许两次引用同一个库,但我想知道是否有可能克服这个限制?
我不允许更改库,但我可以复制/重命名它.
我见过这个例子:
static void Main(string[] args)
{
    Console.WriteLine("Start");
    try
    {
        SomeOperation();
    }
    catch (Exception) when (EvaluatesTo())
    {
        Console.WriteLine("Catch");
    }
    finally
    {
        Console.WriteLine("Outer Finally");
    }
}
private static bool EvaluatesTo()
{
    Console.WriteLine($"EvaluatesTo: {Flag}");
    return true;
}
private static void SomeOperation()
{
    try
    {
        Flag = true;
        throw new Exception("Boom");
    }
    finally
    {
        Flag = false;
        Console.WriteLine("Inner Finally");
    }
}
Run Code Online (Sandbox Code Playgroud)
这会产生下一个输出:
Start
EvaluatesTo: True
Inner Finally
Catch
Outer Finally
Run Code Online (Sandbox Code Playgroud)
这对我来说听起来很奇怪,而且我正在寻找一个很好的解释这个命令,将它包含在我脑海中.我以前期待finally块执行when:
Start
Inner Finally
EvaluatesTo: True
Catch
Outer Finally
Run Code Online (Sandbox Code Playgroud)
文档说明这个执行顺序是正确的,但它没有详细说明为什么这样做,以及这里执行顺序的确切规则是什么.
这是.NET哲学家的一个问题:
我的理解是,微软有意识地否认在C#中使用私有类.为什么他们这样做,他们这样做的理由是什么?
例如,我正在构建一个包含报告工具的大型应用程序.此工具使用许多业务对象,这些对象仅在报表工具中使用,而不在项目的其他部分中使用.我想封装它们仅用于报告工具本身.
伟大的决定是在VS中为这个工具创建单独的项目,我会这样做,但我很有意思,如果我不能这样做 - 例如我们的架构不够好,我们有很大的单一项目.
在"私有类"后面我指的是一个不能在任何其他命名空间中使用的类,除了它自己的类.
我的问题不是 - 我怎么能模拟这个,或者用另一种方式做.我只是想知道,为什么不在没有任何父类的情况下使用带有class关键字的private关键字.我认为应该有一些理由,我想知道它
我们已经开始体验了Not enough storage available to process this command.该应用程序是WPF,正常工作几个小时后会弹出异常.
System.ComponentModel.Win32Exception (0x80004005): Not enough storage is available to process this command
   at MS.Win32.UnsafeNativeMethods.RegisterClassEx(WNDCLASSEX_D wc_d)
   at MS.Win32.HwndWrapper..ctor(Int32 classStyle, Int32 style, Int32 exStyle, Int32 x, Int32 y, Int32 width, Int32 height, String name, IntPtr parent, HwndWrapperHook[] hooks)
   at System.Windows.Interop.HwndSource.Initialize(HwndSourceParameters parameters)
   at System.Windows.Window.CreateSourceWindow(Boolean duringShow)
   at System.Windows.Window.CreateSourceWindowDuringShow()
   at System.Windows.Window.SafeCreateWindowDuringShow()
   at System.Windows.Window.ShowHelper(Object booleanBox)
   at System.Windows.Window.Show()
   at System.Windows.Window.ShowDialog()
Run Code Online (Sandbox Code Playgroud)
我的理解是这是一种内存异常,具体到配置windows resources.可能的原因是什么,我该如何调试?
更新
我已经回顾了@Thili77(这个)提出的主题.我使用GDIView和任务管理器来查看应用程序执行期间消耗的句柄(taskmgr中的句柄,USER对象和GDI对象),看起来它们看起来并不像它们正在增长.我的下一个测试是尝试在没有VS的情况下运行它一天(之前它在VS主机进程下运行)并检查是否仍然发生这种情况.如果有人的话,我仍在寻找任何建议或提示
更新#2 
它发生在没有托管VS的新干净PC上.在崩溃期间,句柄,USER对象和GDI对象都可以.当PC处于崩溃状态时,没有任何工作正常 - 看起来手柄确实泄露,但ProcMon没有显示这些值的大数字.奇怪的是,这总是发生在下午7点到8点左右,当时办公室里没有人,当我启动应用程序运行时无关紧要.这已经是第三次崩溃了.巧合?只有我注意到我觉得奇怪的是应用程序的大量页面错误,它不断增长.这有关系吗?不再出现,请参阅更新#3
更新#3
接下来是我遇到的崩溃的细节.系统是x86,app是x86,W7 …
我有一个带有"开始"和"停止"按钮的应用程序,以及在按下"开始"后在后台运行的线程.我使用MVC和TPL.
我如何处理TPL中的异常,因为我从不调用Wait()方法?在任何异常我需要显示错误消息框,这个框应该在它被立即抛出后显示.
我总是在后台单线程,所以你不能在没有先前停止线程的情况下按下Start.
我正在寻找一些好的模式或最佳实践.我有一个想法,将try..catch放在线程内部,并在每个catch上调用一个事件,但我不确定这样的方法是否是好的架构决策
您对在项目中设计linq代码有什么建议?特别是,我对大而复杂的linq查询的代码设计感兴趣吗?
例如,你知道,你需要写很多巨大的linq东西,也许你的一些代码会有重复的部分,也许不会,你需要:
使代码容易支持 - 意味着,如果您需要更改某些内容. - 你正在改变一件事,而不是很多
使代码易于阅读 - 意味着,如果您需要找到某些东西 - 您可以轻松地执行此操作.
你可以使用你的例子,也许你的练习.也许是你在任何地方看到的一些模式 - 任何东西.
说linq我的意思是任何linq,linq到sql,linq到对象,linq到xml等.
TNX
这里有一些讨论,但我有一些具体的问题,我无法找到答案.因此,通过按名称调用,我的意思是=>T类型,我的意思是0-arity函数() => T
我理解(我认为)概念上的差异,但可能我错过了一些东西,因为我仍然有很多问题:
=>T如果我们总能使用,为什么我们有这个概念() => T呢?=>用作类字段.这是唯一的限制吗?=>T吗?为什么?=>T类型是否正确?它看起来像它在scala中没有任何类型表示.我正在尝试在相同高度和宽度的网格中订购卡片.这些卡将具有不同尺寸的不同内容.他们每排也要3分.每行可以有不同的高度,但行内的高度应该相同.整个网格的每张卡的宽度应相同.
<div class="container">
  <div class="row align-items-stretch justify-content-start card-deck">
   <div class="card">
     <div class="card-body">
      <div class="card-text">
        Card 1
      </div>
     </div>
   </div>
   <div class="card">
     <div class="card-body">
      <div class="card-text">
        Card 1 sasddddddddddddddddd asdd as dassssssssssssssssssssssssss
      </div>
     </div>
   </div>
   <div class="card">
     <div class="card-body">
      <div class="card-text">
        Card 1
      </div>
     </div>
   </div>
   <div class="w-100">
   </div>
   <div class="card">
     <div class="card-body">
      <div class="card-text">
        Card 1
      </div>
     </div>
   </div>
   <div class="card">
     <div class="card-body">
      <div class="card-text">
        Card 1
      </div>
     </div>
   </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)
小提琴:https://jsfiddle.net/q9gp76kL/
我看到当前小提琴的问题:
>>> import math
>>> math.sin(68)
-0.897927680689
Run Code Online (Sandbox Code Playgroud)
但
sin(68) = 0.927 (3 decimal places)
Run Code Online (Sandbox Code Playgroud)
关于为什么我得到这个结果的任何想法?
谢谢.
我正在尝试向PromiseLike<T>
With的原型添加一个方法,String这不是问题:
declare global {
    interface String {
        handle(): void;
    }
}
String.prototype.handle = function() {
}
Run Code Online (Sandbox Code Playgroud)
编译正常
但是,如果我尝试对 执行相同操作,则会PromiseLike<T>出现编译错误'PromiseLike' only refers to a type, but is being used as a value here.:
declare global {
    interface PromiseLike<T> {
        handle(): PromiseLike<T>;
    }
}
PromiseLike.prototype.handle = function<T>(this: T):T {
    return this;
}
Run Code Online (Sandbox Code Playgroud)
显然,这里的问题PromiseLike是通用的。我怎样才能在打字稿中正确地做到这一点?
c# ×6
.net ×3
bootstrap-4 ×1
c#-6.0 ×1
code-design ×1
css ×1
html ×1
linq ×1
math ×1
python ×1
scala ×1
trigonometry ×1
typescript ×1
wpf ×1