问题标签 [invoke]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 在 C# 中调用 C dll 函数、结构和回调
下面是头文件。任何人都可以提供一个想法来调用下面的回调函数。
我已经有了 hlginInstance 和 hDialog 函数,但是我需要帮助来调用回调函数。
问候, 珍妮丝
c# - 异步运行时方法调用
我在运行时加载一些程序集并使用反射(MethodInfo.Invoke)在它们上调用方法。
现在我想让这些调用异步。所以我正在考虑使用 Delegate.BeginInvoke()。但我不确定如何通过在运行时提供函数名称来创建委托实例。(我看到的所有示例都在编译时解析了委托实例目标。)我有一个 MethodInfo 对象,其中包含要调用的方法。有没有办法做到这一点?
vb.net - 对于继承的控件,哪个跨线程调用函数更好?
关于在继承到当前控件时调用 DataGridView.Rows.Add 函数的最佳方法,我有一个相对简单的问题。哪个是调用继承控件的最佳方式?直接在调用中调用它还是使用类递归函数调用它?它们似乎都产生相同的结果,添加一行并返回数量,但哪个最有效?
代表:Private Delegate Function ReturnDelegate() As Object
两种方法是:
A)
或者
二)
c# - C# 多线程——不带控件的调用
我对多线程只是有点熟悉,因为我已经阅读过它,但从未在实践中使用过它。
我有一个使用第三方库的项目,该库通过引发事件来共享输入设备的状态。问题是,编写库的方式这些事件是从不同的线程引发的。
我的应用程序不需要是多线程的,并且我遇到了很多经典的线程问题(UI 控件抱怨从不同的线程进行交互,随着一段代码迭代而被修改的集合等.)。
我只想将第 3 方库的事件返回给我的 UI 线程。具体来说,我认为应该发生的是:
我的班级接收到事件,并且处理程序正在与 UI 不同的线程上运行。我想检测这种情况(例如使用 InvokeRequired),然后执行与 BeginInvoke 等效的操作以将控制权交还给 UI 线程。然后可以在类层次结构上发送适当的通知,并且我的所有数据仅由一个线程触及。
问题是,接收这些输入事件的类不是从 Control 派生的,因此没有 InvokeRequired 或 BeginInvoke。这样做的原因是我试图干净地分离 UI 和底层逻辑。该类仍在 UI 线程上运行,只是在类本身中没有任何 UI。
现在我通过破坏这种分离来解决这个问题。我传入一个对控件的引用,该控件将显示我的类中的数据并使用它的Invoke 方法。这似乎违背了将它们分开的全部目的,因为现在底层类直接依赖于我的特定 UI 类。
也许有一种方法可以保存对运行构造函数的线程的引用,然后在 Threading 命名空间中有一些东西可以执行 Invoke 命令?
有没有解决的办法?我的方法完全错误吗?
c# - 这是使用线程池的正确案例吗?
这是设置:我正在尝试制作一个相对简单的 Winforms 应用程序,一个使用FeedDotNet库的提要阅读器。我的问题是关于使用线程池。由于 FeedDotNet 正在生成同步 HttpWebRequest,因此它阻塞了 GUI 线程。所以最好的事情似乎是将同步调用放在 ThreadPool 线程上,并在它工作时调用表单上需要更新的控件。一些粗略的代码:
this
= 主窗体实例
updatesPending
= 主要形式的 volatile int
ProcessFeedResult
= 对 Feed 对象执行一些操作的方法。由于线程池线程无法返回结果,这是通过主线程处理结果的可接受方式吗?
我担心的主要事情是它的规模。我一次尝试了大约 250 个请求。我见过的最大线程数大约是 53,一旦所有线程都完成,就会回到 21。我记得在我玩代码的一个特殊情况下,我看到它上升到 120。这不是不正常,是吗?此外,在 Windows XP 上,我认为连接数量如此之多,某处会出现瓶颈。我对吗?
我可以做些什么来确保线程/连接的最大效率?
有所有这些问题也让我想知道这是否适合使用 Threadpool。MSDN 和其他消息来源说它应该用于“短期”任务。考虑到我的连接速度相对较快,1-2 秒是否足够“短暂”?如果用户使用 56K 拨号,一个请求可能需要 5-12 秒甚至更多时间。那么线程池也会是一个有效的解决方案吗?
asp.net-mvc - 使用带有操作参数的 ASP.NET MVC 子控制器?
我正在试验MvcContrib 子控制器。查看源代码中的示例,您的父控制器 (HomeController) 采取了一个将子控制器 (FirstLevelSubController) 作为参数的操作:
在 Home 的索引视图中,您可以像这样调用 ViewData.Get 来呈现子控制器及其视图:
子控制器的动作被调用(忽略第二级控制器,该示例只是演示如何嵌套多个子控制器):
这一切都有效,子控制器的视图在父视图中呈现。
但是,如果我在家庭控制器的操作中需要其他参数怎么办?例如,我可能想将 Guid 传递给控制器的 index 方法:
似乎没有任何方法可以做到 <% ViewData.Get("firstLevel").Invoke(); %> 带参数。所以我不知道如何从另一个控制器链接到我的控制器,传递这样的参数:
也许我以错误的方式接近这个?我怎样才能让我的父控制器使用子控制器,但也可以做一些有趣的事情,比如接受参数/参数?
c# - Control.Invoke 在第二次调用时失败
我正在使用.Net Compact Framework 2.0 SP2和C#开发Windows Mobile 5.0 及更高版本的应用程序。
我在一个方法中有这个代码:
当我运行它时,它会在第二条语句(listBox1.Visible = true;)上引发异常,说:
Control.Invoke 必须用于与在单独线程上创建的控件进行交互。
发生了什么?
powershell - powershell - 快速启动本地应用程序
我正在低规格硬件上构建信息亭类型配置脚本。
在脚本结束时,它运行各种应用程序供用户交互。我目前使用普通的调用命令“ path\to\app.exe
”。我想尽快启动并运行界面。我想异步启动应用程序。
我知道有 start-job 和 中的-asJob
标志Invoke-Command
,但它们似乎不适用于启动视觉应用程序。有没有办法做到这一点?
winforms - 如何从 XSD 生成的类型化数据集中捕获连接超时异常?
这可能有点复杂,但请耐心等待。
我有一个 Windows 窗体应用程序。它通过 XSD 设计器使用强类型数据集。我正在通过异步线程运行数据访问查询,执行如下:
我将多线程部分基于此 SO question中的建议。它工作正常......除非在 TableAdapter 上调用 GetList() 时出现 DB 错误(以 SqlExceptions 的形式)。
如果我故意破坏连接字符串,从而导致连接尝试失败,则会在 .NET 框架代码区域的某处生成一系列大约 10 个 SqlException 并被捕获(第一次机会异常)。之后,应用程序抛出一个未处理的异常并终止程序。我知道这一点,因为我在 Main 方法上有一个最后机会异常捕获器,它记录它们应该一直冒泡。但是,如上所述,我在 worker 和回调函数中的 try-catch 永远不会被触发。似乎它们完全被绕过了?即使开始问题的行位于 try-catch 块内。
它是一个 SqlException,因此应该被捕获,但是 Main 方法上的 try-catch 捕获了一个 TargetInvocationException(将 SqlException 作为 InnerException)。错误如预期:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:TCP 提供者,错误:0 - 由于目标机器主动拒绝,无法建立连接。)
但是为什么我的 try-catch 错过了它,而我却得到了 TargetInvocationException 呢?是什么赋予了?我知道这是因为异常发生在与主 UI 线程不同的线程上,但是如果生成的异常是在我有 try-catch 的代码中的这个单独线程中生成的,为什么它会忽略它并放弃完全改为线程,然后导致主线程恐慌并中止?
理想情况下,上面的捕获(SqlException)应该捕获它,并且我可以通过 UI 通知以及启用离线模式以防出现数据库问题。这个问题的细节并不重要,我只想说我可以在那里完全处理它,从而阻止异常发生......如果我的 try-catch 真的能抓住它!
c# - 避免在释放控件时调用 Invoke
我的工作线程中有以下代码(ImageListView
以下源自Control
):
但是,我ObjectDisposedException
有时会使用上述Invoke
方法。似乎可以在我检查IsDisposed
和调用之间设置控件Invoke
。我怎样才能避免这种情况?