小编Ste*_*zek的帖子

如何使用Delphi从Thread更新GUI

我正在使用Delphi匿名线程来执行代码.在线程的中间,必须进行一些GUI更新,一些标签更改等.

如果我从线程内部执行此操作,则会发生更改,但一旦线程停止.他们消失了,然后应用程序给我旧的窗口处理程序错误...(这是预期的)

System Error. Code:1400. Invalid window handle

我尝试使用该Syncronize(updateui);方法来执行更改(将它们移动到一个单独的函数),但是我在syncronize上得到一个错误,E2066 Missing operator or semicolon这对我来说根本没有意义......

我一页又一页地搜索过,他们似乎都这么称呼它,但是当我这样做时,我得到了上述错误......

我说错了吗?

码:

TThread.CreateAnonymousThread(
procedure
 begin
 main.Enabled:=false;
 Loading.show;
 label52.caption:=getfieldvalue(datalive.users,'users','credit_amount','user_id',user_id );
 CoInitialize(nil);
   if (length(maskedit1.Text)=maskedit1.MaxLength) and (pingip(serverip)=true) then
    begin
       if (strtofloat(label52.caption)>0) then
        begin
           ....do some work....

           Synchronize(updateui);
        end
       else Showmessage('Insufficient Funds. Please add funds to continue.');
    end
   else if (length(maskedit1.Text)<>maskedit1.MaxLength) then
    begin
     Showmessage('ID Number not long enough.');
    end
   else
    begin
     Showmessage('Could not connect to the server. Please check your internet connection and try again.');
    end; …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading

7
推荐指数
1
解决办法
5940
查看次数

如何在MvvmCross 4.0中向backstack添加片段?

我有一个Activity,它在框架布局中托管片段.如果我将显示的片段更改为另一个片段,则片段不会添加到后台,因此使用"后退"按钮会立即关闭应用而不是导航回来(OnBackPressed中的FragmentManager.BackStackEntryCount始终为0) ()-打回来).

在托管片段的"MainActivity"的ViewModel中,我通过ShowViewModel <> - 方法显示片段:

public class MainViewModel : MvxViewModel
{
    public IMvxCommand ShowHomeCommand
    {
        get { return new MvxCommand(ShowHomeExecuted); }
    }

    private void ShowHomeExecuted()
    {
        ShowViewModel<HomeViewModel>();
    }
}
Run Code Online (Sandbox Code Playgroud)

fragment-class有一个注释,用于将ViewModel分配给host-activity:

[MvxFragment(typeof(MainViewModel), Resource.Id.fragment_container)]
[Register("namespace.of.HomeFragment")]
Run Code Online (Sandbox Code Playgroud)

我在Setup-class中使用默认的AndroidViewPresenter:

protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
   var mvxFragmentsPresenter = new MvxFragmentsPresenter(AndroidViewAssemblies);
   Mvx.RegisterSingleton<IMvxAndroidViewPresenter>(mvxFragmentsPresenter);
   return mvxFragmentsPresenter;
}
Run Code Online (Sandbox Code Playgroud)

我期望在MvxFragment-Attribut或MvxFragment类中有一个参数"AddToBackstack"或类似的东西但是没有这样的东西.我是否遗漏了某些东西,或者目前在MvvmCross 4.0的新片段机制中是否支持后备栈?

c# android mvvmcross xamarin

6
推荐指数
1
解决办法
1426
查看次数

应用程序崩溃时"...停止工作"到达前台时

我最近得到了一个工具的修复错误的请求,该工具是由一个离开公司的同事创建的.

这个工具基本上是一个基于.NET-Framework 4的WinForms应用程序.它一般工作正常,但以下情况会导致随机崩溃:

如果程序在后台(没有焦点)并且在一段时间后被用户带到前台(聚焦/激活),则它会在消息"ToolName已停止工作"时崩溃.

如果在调试器下执行,则ToolName将替换为"vshost.exe".没有显示其他错误消息.我不知道哪行代码会导致错误.

一些其他信息:

  • 如果我尝试通过激活窗口强制此错误,激活另一个窗口(例如Outlook),然后再次激活我的工具的窗口,这将很少崩溃该工具(必须有一些其他杠杆).
  • Form_LoadForm_SizeChanged之外,MainForm没有指定的事件处理程序
  • 该应用程序使用WeifenLuo-Docking-Library和ZedGraph-Library.
  • 我的印象是,只有应用程序运行一段时间才会出现此错误.
  • 崩溃至少出现在两台运行Windows 7 x64的计算机上.(到目前为止我还没有尝试过任何其他的)
  • 我无法在崩溃过程中附加一个debbuger(Visual Studio 2010和2013都不会起作用!).我收到了消息

"当前的调试器配置为调试使用Microsoft .NET Framework v 1.0,1.1或2.0的代码.从.NET Framework v4.0代码中抛出未处理的异常."

我试图通过添加全局异常处理程序来获取有关崩溃的更多信息,这些异常处理程序应该创建一个带有堆栈跟踪的MessageBox但它们不会触发:

[STAThread]
static void Main()
{
  AppDomain currentDomain = default(AppDomain);
  currentDomain = AppDomain.CurrentDomain;

  currentDomain.UnhandledException += GlobalUnhandledExceptionHandler;
  System.Windows.Forms.Application.ThreadException += GlobalThreadExceptionHandler;

  // ...
}

private static void GlobalUnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
  Exception ex = default(Exception);
  ex = (Exception)e.ExceptionObject;

  MessageBox.Show(ex.Message + "\n" + ex.StackTrace);
}

private static void GlobalThreadExceptionHandler(object sender, System.Threading.ThreadExceptionEventArgs e)
{ …
Run Code Online (Sandbox Code Playgroud)

c# crash winforms

2
推荐指数
1
解决办法
917
查看次数

像GCM这样的推式通知在内部如何工作?

诸如Google Cloud Messaging(GCM)之类的推送通知服务提供了一项特殊功能:它们能够唤醒处于空闲模式的设备。

关于电池寿命,采用哪种方式通过推连接唤醒设备?我的第一个假设是,即使设备的处理器处于睡眠状态,无线电的连接仍处于活动状态。在收到推送消息的情况下,无线电会通过中断唤醒处理器,并启动android处理该推送消息的意图。

但是,有像“ OpenPush”这样的第三方推送服务提供了相同的功能,这使我的假设看起来不完整或错误。还是这些服务只是多个供应商(Google,Apple)的推送系统的抽象,并且是以本机方式集成的服务的桥梁?

android push-notification ios

1
推荐指数
1
解决办法
908
查看次数

.NET升级到较低版本的服务器

我们正在将项目从.NET-Framework 3.0升级到4.5.代码升级成功,现在我们计划将应用程序发布到我们的服务器.

我们的关注:

服务器仅安装了.NET-Framework版本4.0-版本,而不是版本4.5.

这会是一个问题吗?

.net .net-framework-version

0
推荐指数
1
解决办法
55
查看次数