草庐IT

dispatch_main_queue_callback

全部标签

c# - 在事件分派(dispatch)之前检查 null ...线程安全吗?

有些事情让我感到困惑,但从来没有造成任何问题......推荐的调度事件的方式如下:publiceventEventHandlerSomeEvent;...{....if(SomeEvent!=null)SomeEvent();}在多线程环境中,此代码如何保证另一个线程不会在检查null和调用事件之间更改SomeEvent的调用列表? 最佳答案 正如您所指出的,在多个线程可以同时访问SomeEvent的情况下,一个线程可以检查SomeEvent是否为null并确定它是否为null。就在这样做之后,另一个线程可以从SomeEvent中删

c# - IO 101 : Which are the main differences between TextWriter, FileStream 和 StreamWriter?

如果这个问题对于你们这些经验丰富的程序员来说可能听起来有点业余,让我首先道歉,问题是我在工作中一直有很多关于这个的争论所以我真的想弄清楚这个问题,这就是为什么我我依靠stackoverflow社区一劳永逸地解决这个问题:)因此,一方面,根据MSDN,我们有:TextWriterClassRepresentsawriterthatcanwriteasequentialseriesofcharacters.Thisclassisabstract.FileStreamClassExposesaStreamaroundafile,supportingbothsynchronousandasyn

c# - 为什么 Main() 方法应该是静态的?

我试图在C#中创建publicvoidMain();它说没有找到staticvoidMain。Main是静态的究竟意味着什么?我知道该代码适用于publicstaticvoidMain()。但是为什么Main必须是static? 最佳答案 您的程序需要一个入口点。静态意味着您可以调用函数而无需实例化类的对象/实例。这有点“先有鸡还是先有蛋”……在进入程序之前不能实例化对象。可以在不实例化对象的情况下调用静态方法。因此,main()需要是静态的,以使其成为程序的入口。正如David所说,您只需将关键字static添加到函数定义中即可对

c# - C# 控制台应用程序中的 public static void Main() 和 private static void Main() 有什么区别?

有什么区别publicstaticvoidMain()和privatestaticvoidMain()在C#控制台应用程序中?特别是因为它与Main()方法有关(我了解public和private之间的区别)。 最佳答案 要作为应用程序的起点,Main方法不需要是public。如果您确实决定将其设为public,则它可能会被其他类或程序集调用。通常您不需要这样做,因此您可以将其设为private。将其设为public的一个可能用例是允许自动化测试调用它。 关于c#-C#控制台应用程序中的

c# - 错误消息 "CS5001 Program does not contain a static ' Main' 适合入口点的方法”

无法执行以下代码错误CS5001程序不包含适合入口点的静态“Main”方法这个错误信息是什么意思?classProgram{staticasyncTaskMainAsync(string[]args){Account.accountTestaccountTest=newAccount.accountTest();boolresult=awaitaccountTest.CreateAccountAsync();}} 最佳答案 这意味着您目前没有适合您的应用程序的入口点。该代码几乎适用于C#7.1,但您确实需要在项目文件中明确启用C#7

c# - 不能将 lambda 表达式用作动态分派(dispatch)操作的参数,而不先将其转换为委托(delegate)或表达式树类型

我正在使用.NET4.5和VS2013,我有一个获取dynamic的查询来自数据库的结果。dynamictopAgents=this._dataContext.Sql("selectt.create_user_idas\"User\",sum(t.netamount)as\"Amount\"fromtransactiondetailtwheret.update_date>sysdate-7groupbyt.create_user_id").QueryMany();以下语句因编译错误而失败Cannotusealambdaexpressionasanargumenttoadynamical

c# - C# 中的双重分派(dispatch)?

我听过/读过这个词,但不太明白它的意思。我应该在什么时候使用这种技术以及如何使用它?谁能提供一个好的代码示例? 最佳答案 访问者模式是一种以面向对象的方式进行双重调度的方式。当您想根据运行时的类型而不是编译时的类型为给定参数选择使用哪种方法时,它很有用。双重dispatch是多重dispatch的特例。当您在一个对象上调用一个虚拟方法时,这被认为是单分派(dispatch),因为调用哪个实际方法取决于单个对象的类型。对于双重分派(dispatch),对象的类型和方法唯一参数的类型都会被考虑在内。这类似于方法重载决策,不同之处在于参数

c# - Dispatcher.BeginInvoke : Cannot convert lambda to System. 委托(delegate)

我正在尝试调用System.Windows.Threading.Dispatcher.BeginInvoke。该方法的签名是这样的:BeginInvoke(Delegatemethod,paramsobject[]args)我试图向它传递一个Lambda而不是必须创建一个委托(delegate)。_dispatcher.BeginInvoke((sender)=>{DoSomething();},newobject[]{this});它给我一个编译器错误,说我can'tconvertthelambdatoaSystem.Delegate.委托(delegate)的签名以一个对象为参数,

c# - WPF 中没有 Main()?

在编程方面我是初学者,但我确信通用规则之一是程序以Main()开头。我在创建WPF项目时没有看到。Main()只是在WPF中以不同的方式命名吗? 最佳答案 Main()方法是自动创建的。如果你想提供你自己的,你必须(在VS2013、VS2017和VS2019中测试):在解决方案资源管理器中右键单击App.xaml,选择“属性”将“构建操作”更改为“页面”(初始值为“ApplicationDefinition”)然后只需将Main()方法添加到App.xaml.cs。它可能是这样的:[STAThread]publicstaticvoi

c# - 这种类型的 CollectionView 不支持从不同于 Dispatcher 线程的线程更改其 SourceCollection

这个问题在这里已经有了答案:HowdoIupdateanObservableCollectionviaaworkerthread?(7个答案)关闭2年前。我有一个DataGrid,它通过异步方法从ViewModel填充数据。我的DataGrid是:我正在使用http://www.amazedsaint.com/2010/10/asynchronous-delegate-command-for-your.html在我的View模型中实现异步方式。这是我的View模型代码:publicclassMainWindowViewModel:WorkspaceViewModel,INotifyCo