Tag: 回调

如何在C#中调用和使用WSAAsyncSelect()?

我设置赏金时编辑了我的问题。 我想从WinAPI调用/ DllImport WSAAsyncSelect()并使用它,就像我在Delphi / C ++中使用它一样 例如 – delphi //Async CallBack handler Declaration procedure MessageHandler(var Msg:Tmessage);Message WM_WINSOCK_ASYNC_MSG; //Where i setup the Async dwError := WSAAsyncSelect(Sock, form1.handle, WM_WINSOCK_ASYNC_MSG, FD_CLOSE or FD_READ); //Async Callback Handler procedure Tform1.MessageHandler(var Msg:Tmessage); begin case WSAGetSelectEvent(MSG.LParam) of //LParam is FD_READ/FR_CLOSE/FD_WRITE FD_READ: OnSocketRead(MSG.WParam); //WPARAM is the Socket itself. FD_CLOSE: OnSocketClose(MSG.WParam); end; end; […]

有没有办法使用HttpPostedFile类获得上传进度?

我想使用HttpPostedFile类从网页上传一个或多个大文件到ASP.NET MVC控制器。 使用此类,上载的大于256 KB的文件将缓冲到磁盘,而不是保存在服务器内存中。 我的理解是它可以这样做: if (context.Request.Files.Count > 0) { string tempFile = context.Request.PhysicalApplicationPath; for(int i = 0; i 0) { uploadFile.SaveAs(string.Format(“{0}{1}{2}”, tempFile,”Upload\\”, uploadFile.FileName)); } } } 有没有办法设置回调或使用其他方法,通过AJAX或JSON定期返回状态到网页,以便显示进度条和完成百分比? 代码会是什么样的?

通过WCF回调发送业务对象时发生超时

我有一个WCF服务实现了回调合同,我试图通过发送业务对象。 我有使用DataContract()和DataMember()属性修饰的业务对象,它包含以下数量的属性: 整理:3 字符串:4 XElement:1 其他对象:5(也用DataContract()和DataMember()修饰 每当我尝试通过回调发送此对象时,服务就会超时。 我已经尝试创建具有较少属性的其他对象以通过回调发送,并且如果只有一个属性可以让它通过,但如果我有任何多个属性,则服务超时。 我的配置有问题吗? 我已经尝试了默认的wsDualHttpBinding,以及一个customBinding(如下所示),我尝试了各种不同的设置,包括maxBufferSize,maxBufferPoolSize和maxReceivedMessageSize。 我不想增加超时,因为我希望这个对象能够很快地到达我的客户端。 请有人帮助我…如果我留下了任何头发,我会把它拉出来!!!!! 我已经配置了我的服务: 服务器配置: 客户端配置:

如何在收到异步函数回调之前hibernate一个线程?

我有一个只有在从异步函数收到回调时才需要执行的函数。 喜欢 我调用异步函数Stop() ,不久之后我调用异步函数Start() 。 收到Stop CallBack之前的问题调用Start()被调用,因此我遇到了问题。 另外我无法分开两个函数的调用,就像我不能这样做: public void SomeFunction() { Stop(); } public void Stop_CallBack(eventargs e) { Start(); } 我必须这样做: public void SomeFunction() { Stop(); //Do something; Start(); } 但在我收到停止回叫之前,我的start()函数被执行,从而为我创造了问题。 任何人都可以帮助我如何解决这个问题。

如何估算方法执行时间?

我需要取消方法执行,如果它需要两秒以上才能完成并在另一个线程上重新启动它。 那么,有没有办法/回调机制/ HACK,我可以通过方法告诉我它超过了2秒的时间限制?

(如何)绑定/重新绑定方法以使用不同签名的委托?

我是一个c ++开发人员,在c ++中使用了信号和插槽,这对我来说似乎与c#中的委托类似。 我发现自己在寻找“绑定”提供的function时感到很茫然,并且觉得我必须遗漏一些东西。 我觉得像C ++这样的东西应该可以在c#中使用委托。 这里有一些psudo代码,用于我将在c ++中做什么: Slot someCallback; int foo(int i) { std::cout << "Value: " << i << "\n"; return i; } int main() { int i = 0; Slot someCallback = bind( fun_ptr(foo), i ); ++i; // added to show that late evaluation would be a non-trivial difference int result = […]

C#app将C ++ dll通过回调返回到C#app

我正在编写一个调用C ++ DLL的C#应用​​程序。 这个dll是成像系统的设备驱动程序; 当获取图像时,可以从库中逐行地获得图像的预览。 C ++ dll采用回调来填充预览,该回调基本上由最终图像的大小,当前扫描的行和数据本身组成。 问题是,从扫描停止和C#回调停止获取信息时起,存在相当严重的延迟。 该程序的流程如下: 从C#中分配回调到C ++ dll 用户开始获取数据 设备启动 几秒后dll开始调用回调(正常) 设备完成图像形成 dll仍在调用回调的时间是图像形成的两倍。 这个dll适用于C ++应用程序就好了; 似乎没有最后一步延迟。 但是,在C#中,如果我立即返回回调,则延迟仍然存在; 无论我在回调中做什么,它都在那里。 这种延迟是否是从非托管代码调用托管代码的固有限制,或者是否有任何一方可以做到这一点以使其更快? 我与C ++库编写器有联系,因此可以从C ++端实现修复。 编辑:可以做一些像命名管道一样简单的工作吗? 应用程序可以从自己的管道中读取吗?

C#包装器和回调

我正在为Dallmeier Common API灯(Camera&Surviellance系统)编写C#包装器,之前我从未编写过包装器,但我使用了Canon EDSDK C#包装器。 所以我使用Canon包装器作为编写Dallmeier包装器的指南。 我目前遇到包装回调的问题。 在API手册中,它具有以下内容: dlm_connect int(unsigned long uLWindowHandle, const char * strIP, const char* strUser1, const char* strPwd1, const char* strUser2, const char* strPwd2, void (*callback)(void *pParameters, void *pResult, void *pInput), void * pInput) 参数 – ulWindowhandle – 传递给ViewerSDK以在那里显示video和消息的窗口句柄 – strUser1 / 2 – 要登录的用户的名称。如果仅使用单用户登录,则strUser2为 – 空值 – strPwd1 / 2 […]

如何给Dispatcher.BeginInvoke提供回调函数

当函数以Dispatcher.BeginInvoke启动完成时,我需要使用回调函数来执行一些后处理任务。 但是我在Dispatcher.BeginInvoke中找不到任何参数来接受回调。 是否可以为Dispatcher.BeginInvoke提供回调函数?

Silverlight中的多个异步UI更新

如何从Silverlight回调中执行多个UI更新? 例如,我希望用户单击一个按钮,让UI进行更改,做一些工作,然后进行另一次更改……相反,用户单击按钮,回调似乎在后台执行,然后全部用户界面的变化在我眼前浮现。 MainPage.xaml中: MainPage.xaml.cs中: private void button1_Click(object sender, RoutedEventArgs e) { textBlock1.Text = “1”; // also tried Thread.Sleep(5000); Dispatcher.BeginInvoke(() => Thread.Sleep(5000)); textBlock1.Text = “2”; }