小编Tre*_*com的帖子

处理问题

我有许多类具有实现IDisposable(定时器,画笔等)的私有成员变量.我是否需要做任何事情以确保.NET Framework正确清理这些变量?

我遇到的文献是指"托管资源"与"非托管资源".这些术语让我感到困惑,因为您可以拥有一个使用非托管资源实现功能的托管类.这被认为是"非托管资源"还是"托管资源"?

我的理解是,如果您没有在实现IDisposable的对象上调用Dispose(),那么在应用程序退出之前不会释放资源.在长时间运行程序时,这种情况可能会导致OutOfMemory异常.

如何确保我的代码正确处理资源管理?这对于这些对象很重要,因为它们是自定义控件,并且可能有很多绘图消耗了IDisposable资源.我尽可能使用C#using语句,但有时我需要使一个对象实现IDisposable成员变量,而using语句对我没有帮助.

.net c# dispose

11
推荐指数
2
解决办法
2522
查看次数

const引用必须在构造函数base/member初始化列表中初始化

我试图阻止访问我正在编写的类的默认构造函数.我希望其他人使用的构造函数需要对另一个对象的const引用.我已将默认构造函数设为私有,以防止其他人使用它.我收到默认构造函数的编译器错误,因为const引用成员变量未正确初始化.我该怎么做才能编译?

class CFoo
{
public:
    CFoo();
    ~CFoo();
};

class CBar
{
public:
    CBar(const CFoo& foo) : fooReference(foo)
    {
    }

    ~CBar();

private:
    const CFoo& fooReference;

    CBar() // I am getting a compiler error because I don't know what to do with fooReference here...
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ constructor initialization reference

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

在使用DownloadCache之前,必须在File插件上调用EnsureLoaded

我已经通过NuGet从版本4.2.0更新到MvvmCross版本4.2.1,现在Android项目在启动时崩溃了.一个MvxException闪屏与消息中被抛出:

MvvmCross.Platform.Exceptions.MvxException:在使用DownloadCache之前,必须在File插件上调用EnsureLoaded

我实际上是在MvxAppCompatSetup.InitializeLastChance覆盖中调用此方法.对于4.2.0版本,这对我来说效果很好,但现在InitializeLastChance运行版本4.2.1时代码甚至没有出现.

protected override void InitializeLastChance()
{
    base.InitializeLastChance();
    MvvmCross.Plugins.File.PluginLoader.Instance.EnsureLoaded();
    MvvmCross.Plugins.DownloadCache.PluginLoader.Instance.EnsureLoaded();
}
Run Code Online (Sandbox Code Playgroud)

我无法移动EnsureLoaded调用,InitializeFirstChance因为我会得到一个例外,因为插件尚未初始化

无法解析类型MvvmCross.Platform.Plugins.IMvxPluginManager

MvxSetup.InitializePluginFramework出现的时候抛这个异常InitializePluginFramework被调用.

NuGet显示了我在更新期间安装的每个插件的错误消息:

[失败]无法归档文件'...\Project.Droid\Bootstap\XXXBootstrap.cs'

文件肯定存在,软件包安装时不报告错误.

处理这个问题的正确方法是什么?

mvvmcross

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

解析自定义二进制平面文件的首选方法?

我有一个由C程序生成的平面文件.文件中的每条记录都包含一个固定长度的标题,后跟数据.标题包含指示以下数据大小的字段.我的最终目标是编写一个C#/ .NET程序来查询这个平面文件,所以我正在寻找使用C#读取文件的最有效方法.

我在以下代码中找不到第7行的.NET等效项.据我所知,我必须发出多次读取(使用BinaryReader为标头的每个字段一次),然后发出一次读取以获取标头后面的数据.我正在尝试学习一种在两次读取操作中解析记录的方法(一次读取以获取固定长度的头部,另一次读取以获取以下数据).

这是我试图使用C#/ .NET复制的C代码:

struct header header; /* 1-byte aligned structure (48 bytes) */
char *data;

FILE* fp = fopen("flatfile", "r");
while (!feof(fp))
{
  fread(&header, 48, 1, fp);
  /* Read header.length number of bytes to get the data. */
  data = (char*)malloc(header.length);
  fread(data, header.length, 1, fp);
  /* Do stuff... */
  free(data);
}
Run Code Online (Sandbox Code Playgroud)

这是标题的C结构:

struct header
{
    char  id[2];
    char  toname[12];
    char  fromname[12];
    char  routeto[6];
    char  routefrom[6];
    char  flag1;
    char  flag2;
    char  flag3;
    char  flag4;
    char  cycl[4];
    unsigned short len; …
Run Code Online (Sandbox Code Playgroud)

c# parsing flat-file

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

如何使用MvvmCross 5 IMvxNavigationService获取PendingIntent?

我有一个我在MvvmCross 4.x中使用的方法,用于NotificationCompat.Builder设置PendingIntent一个通知,以便在用户单击通知时显示ViewModel.我正在尝试将此方法转换为使用MvvmCross 5.x,IMvxNavigationService但无法查看如何设置演示文稿参数,并获得PendingIntent使用新的导航API.

private PendingIntent RouteNotificationViewModelPendingIntent(int controlNumber, RouteNotificationContext notificationContext, string stopType)
{
    var request = MvxViewModelRequest<RouteNotificationViewModel>.GetDefaultRequest();
    request.ParameterValues = new Dictionary<string, string>
    {
        { "controlNumber", controlNumber.ToString() },
        { "notificationContext", notificationContext.ToString() },
        { "stopType", stopType }
    };
    var translator = Mvx.Resolve<IMvxAndroidViewModelRequestTranslator>();
    var intent = translator.GetIntentFor(request);
    intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask);

    return PendingIntent.GetActivity(Application.Context,
                                     _notificationId,
                                     intent,
                                     PendingIntentFlags.UpdateCurrent);
}
Run Code Online (Sandbox Code Playgroud)

当我点击该通知,但RouteNotificationViewModel确实出现PrepareInitialize没有被调用.有什么必要将此方法从MvvmCross 4.x导航风格转换为MvvmCross 5.x导航风格?

c# xamarin.android mvvmcross

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

MvvmCross Android EditText绑定不更新屏幕

我发现当使用MvvmCross版本3.5.1启用"不要保持活动"开发人员设置时,Mvvm Cross EditText绑定无法正常工作的情况.以下是重现的步骤:

  1. 使用NuGet的"入门"Mvvm Cross软件包创建一个新的Core&Droid项目.
  2. 从NuGet添加ZXing.Net.Mobile PCL组件.
  3. 实现ViewModel:

        public class FirstViewModel : MvxViewModel
        {
            private readonly IMobileBarcodeScanner _mobileBarcodeScanner;
    
            public FirstViewModel(IMobileBarcodeScanner mobileBarcodeScanner)
            {
                _mobileBarcodeScanner = mobileBarcodeScanner;
            }
    
            private string _barCode = "";
            public string BarCode
            { 
                get { return _barCode; }
                set { _barCode = value; RaisePropertyChanged(() => BarCode); }
            }
    
            private MvxCommand _scanBarCodeCommand;
            public IMvxCommand ScanBarCodeCommand
            {
                get
                {
                    return _scanBarCodeCommand ?? (_scanBarCodeCommand = new MvxCommand(async () => await OnScanBarCode()));
                }
            }
    
            private async Task OnScanBarCode()
            {
                var result = …
    Run Code Online (Sandbox Code Playgroud)

c# zxing xamarin.android mvvmcross xamarin

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

Report Viewer 14.0可再发行

以前版本的Windows窗体的Microsoft Report Viewer技术有一个运行时文件,您可以在客户端PC上安装该文件,以在用户计算机上设置Microsoft Report Viewer程序集.Visual Studio 2017使用的Report Viewer版本14.0是否存在类似的内容?我似乎无法在互联网上找到任何可用的东西.

rdlc winforms visual-studio-2017

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