我刚刚发布了一个关于如何让代理人在另一个表单上更新文本框的问题.就在我以为我有使用Invoke的答案时...这种情况发生了.这是我的代码:
主表格代码:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Data.OleDb;
using System.Collections.Specialized;
using System.Text;
using System.Threading;
delegate void logAdd(string message);
namespace LCR_ShepherdStaffupdater_1._0
{
public partial class Main : Form
{
public Main()
{
InitializeComponent();
}
public void add(string message)
{
this.Log.Items.Add(message);
}
public void logAdd(string message)
{ /////////////////////////// COMPILER ERROR BELOW ///////////
this.Invoke(new logAdd(add), new object[] { message }); // Compile error occurs here
}////////////////////////////// COMPILER ERROR ABOVE ///////////
private void exitProgramToolStripMenuItem_Click(object …Run Code Online (Sandbox Code Playgroud) 是否有可能通过字符串表示"调用"类实例?
在这种情况下,我希望代码看起来像这样:
class MyClass {
public $attribute;
}
$obj = getInstanceOf( "MyClass"); //$obj is now an instance of MyClass
$obj->attribute = "Hello World";
Run Code Online (Sandbox Code Playgroud)
我认为这一定是可能的,因为PHP的SoapClient接受一个classMappings列表,用于将WSDL元素映射到PHP类.但SoapClient如何"调用"类实例?
我想从我的应用程序中调用android计算器.我不想传递任何东西,只需提供一个快速启动按钮.任何人都可以告诉我如何或指出我如何做到这一点的例子?
我正在工作线程中执行代码.有时,我需要显示一个对话框或一条消息.
我一直在玩代码,只是Invoke在我传递IWin32Window给对话框时似乎是严格必要的.否则工作正常.
我的问题是两个:
Invoke?提前致谢
我有一个Powershell脚本(.ps1),该脚本执行具有返回值的其他Powershell脚本。
我使用以下命令调用脚本:
$result = Invoke-Expression -Command ".\check.ps1 $fileCommon"
Write-Output $result
Run Code Online (Sandbox Code Playgroud)
输出仅Write-Ouput是具有其他脚本的,而没有返回值是$true或$false。
如何捕捉其他脚本的收益?
所以我在我的应用程序中有一个线程,其目的是监听来自服务器的消息并根据它收到的内容采取行动.
当我想从服务器发出消息时遇到问题,当客户端应用程序收到消息时,客户端应用程序将打开一个新表单.然而,这个新形式立即冻结.
我认为正在发生的事情是新表单被加载到与监听服务器的线程相同的线程上,当然这是忙于监听流,然后阻塞线程.
通常,对于我在客户端监听线程中的其他函数,我会使用调用来更新主窗体的UI,所以我想我要求的是,如果这是一种在主窗体上调用新窗体的方法.
我正在使用单声道测试我的应用程序预装Linux端口,我有一个线程问题.我最初考虑在这里粘贴3000个代码行,但最后我设计了一个小的最小例子;)
你有一个带有按钮的表单(诗意地命名Button1,并且有一个标签(毫无意外地带有名称Label1)).整个地段都在一个叫做的形式上过着幸福的生活Form1.单击Button1启动无限循环,增加本地计数器并更新Label1(使用Invoke)以反映其值.
现在在Mono中,如果您调整表单大小,标签将停止更新,永远不会重新启动.MS实现不会发生这种情况.BeginInvoke没有更好的工作; 更糟糕的是,它使UI在两种情况下都挂起.
你知道这种差异来自哪里吗?你会如何解决它?最后,为什么BeginInvoke不在这里工作?我一定是犯了一个大错...但是哪个?
Invoke调用永远不会返回.我想知道为什么.BeginInvoke,在调整大小操作结束之前也不会执行异步调用.在MS.Net上,它们在调整大小时继续运行.代码看起来像这样(C#版本更低):
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim T As New Threading.Thread(AddressOf Increment)
T.Start()
End Sub
Sub UpdateLabel(ByVal Text As String)
Label1.Text = Text
End Sub
Delegate Sub UpdateLabelHandler(ByVal Text As String)
Sub Increment()
Dim i As Long = 0
Dim UpdateLabelDelegate …Run Code Online (Sandbox Code Playgroud) 我想window.setTimeot用我的自定义范围调用该函数,所以我使用该call方法,但有一些错误.
function foo() {
this.bar = function() {
console.log("keep going");
window.setTimeout.call(this,this.bar,100);
}
this.bar();
}
new foo;
Run Code Online (Sandbox Code Playgroud)
在Firefox下,这只打印到控制台只有1行,然后什么也没有,在谷歌Chrome下它会抛出一个TypeError.
我的代码有什么问题?
好吧,我正在编写一个对字符串,标签,链接标签,类等有用的扩展/方法文件.
但是,我有一个问题.我有一个showMessage()更改标签文本的方法,工作正常.但我决定使用线程执行,然后我这样做:
namespace LabelExtensions
{
public static class LabelExtensionsClass
{
private delegate void UpdateState();
public static void ShowMessage(this Label label, string text)
{
if (label.InvokeRequired)
{
label.Invoke((UpdateState)delegate
{
label.Text = text;
});
}
else
{
label.Text = text;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
对不起,这是一个错字.我在论坛上输入了这段代码.错误继续.
根据文档,要使用Invoke方法需要导入:
命名空间: System.Windows.Forms
程序集: System.Windows.Forms(在System.Windows.Forms.dll中)
然后我做了:
using System.Windows.Forms;
Run Code Online (Sandbox Code Playgroud)
但是这会返回相同的错误:
The name 'Invoke' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
提前致谢.
我正在研究 kotlin 中的运算符重载,并且遇到了invoke方法。当我对它进行研究时,我发现它的工作原理与init每个类的构造函数非常相似。我无法理解其中的差异,它们似乎很相似,因为我们在invoke方法中所做的一切,也可以在构造函数中完成init。
那么它们有什么区别以及我们什么时候应该使用它们呢?
invoke ×10
c# ×4
.net ×2
android ×2
winforms ×2
begininvoke ×1
calculator ×1
call ×1
class ×1
delegates ×1
handle ×1
init ×1
instance ×1
javascript ×1
kotlin ×1
mono ×1
php ×1
powershell ×1
return-value ×1
scope ×1
settimeout ×1