小编nf3*_*743的帖子

C# - 覆盖事件处理程序 - 添加参数

我正在使用System.Diagnostics.Process该类来执行命令行程序.

我正在使用该OutputDataReceived方法将输出重定向到我自己的方法.

pr.OutputDataReceived += new DataReceivedEventHandler(OnDataReceived);
pr.ErrorDataReceived += new DataReceivedEventHandler(OnDataReceived);
Run Code Online (Sandbox Code Playgroud)

但是,我有多个线程运行此cmd程序的多个实例.我想要做的是能够识别输出数据来自哪个流程实例 - 理想情况下,包含名称的字符串.(每个进程在GUI上都有自己的进度条.我创建了另一个事件来将输出传递给GUI,因此,我需要知道数据来自哪个进程来更新其进度条).

我开始尝试:

public override delegate void DataReceivedEventHandler(object sender, DataReceivedEventArgs e, string processName);
Run Code Online (Sandbox Code Playgroud)

然后我意识到我必须覆盖OutputDataReceivedProcess类中的方法.这反过来意味着我必须创建一个继承的自定义类System.Diagnostics.Process,并且有一个接受字符串参数的方法,以便OutputDataReceived事件可以将流程实例名称(字符串)传递给我的重写DataReceivedEventHandler.

问题的目的是获得关于如何进行的一些意见.我的建议似乎是实现我想要的正确方法吗?或者,有更好的方法吗?

c# events overriding process

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

数据结构/容器选择

我有以下场景:

  • 来自多个视频文件的数据需要保存在数据结构/集合中.
  • 视频文件可以包含1到多个视频流.
  • 每个流都有一个字段和值对.

例如:

Video1:
  Stream1:
    format mpeg
    bitrate 700kb/s
    resolution 1024x764

  Stream2:
    format mpeg
    bitrate 600kb/s
    resolution 800x600

Video2:
  Stream1:
    format mpeg
    bitrate 700kb/s
    resolution 1024x764

  Stream2:
    format mpeg
    bitrate 600kb/s
    resolution 800x600
Run Code Online (Sandbox Code Playgroud)

这是我考虑将数据保存在:

QVector<QVector<QStringList>>
Run Code Online (Sandbox Code Playgroud)

QStringList值对在哪里(格式,mpeg).

Inside QVector保存了流的多对.

外部QVector保存所有内容,即每个条目/索引是单个视频文件的数据.

我不确定这是否是保存数据的最佳方式我认为集合内的集合内的集合不会非常有效.

对替代品的任何意见?

c++ collections qt

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

Wput - 上传文件夹

我一直在搜索并尝试使用wput.exe来上传整个文件夹及其子文件夹.我被告知Wput可以做到这一点.我尝试过以下方法:

wput C:\ upload\ ftp:// user:password@172.29.200.158/Transfer/

有任何想法吗?

ftp

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

具有基础类型的枚举.无意中返回字符串表示

我有以下枚举:

 public enum BikeType : byte
  {
    Road = 0,
    Mountain = 1
  };
Run Code Online (Sandbox Code Playgroud)

当我尝试将它传递给我时,我检索字节的'字符串'表示,而不是数字值:

string str = string.Format("Road bike has a byte value of {0}", BikeType.Road);

"Road bike has a byte value of Road"
Run Code Online (Sandbox Code Playgroud)

我想要字节值(0).我究竟做错了什么?

谢谢

c# enums

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

使用TimeZoneInfo.ConvertTime()的时间不正确

从转换时我得到一个意外的DateTime:

(UTC) Dublin, Edinburgh, Lisbon, London(UTC-08:00) Baja California

以下是我一直在使用的代码.我期待serverDateTime成为29/03/2016 00:00:01(-8小时),而是我得到28/03/2016 23:00:01-这是一个9小时的时差.

    private static void Main(string[] args)
    {
        ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
        TimeZoneInfo localTimeZone = timeZones.FirstOrDefault(tz => tz.DisplayName.Contains("London"));
        TimeZoneInfo serverTimeZone = timeZones.FirstOrDefault(tz => tz.DisplayName.Contains("California"));
        DateTime clientDateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 29, 8, 0, 1);
        DateTime serverDateTime = TimeZoneInfo.ConvertTime(clientDateTime, localTimeZone, serverTimeZone);
    }
Run Code Online (Sandbox Code Playgroud)

我的本地机器在英国,目前是UTC + 1,而Baja - California目前是UTC-7,所以我希望得到8小时的差异,而不是9.我做错了什么?

提前致谢.

c# timezone datetime

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

将API类转换为Inherited类

为什么以下不起作用?这样投不可能吗?

我收到错误: java.lang.ClassCastException: java.io.File cannot be cast to MyMusicFile

public class MyMusicFile extends java.io.File
{
  public MyMusicFile(String pathname) 
  {
    super(pathname);
  }

  public String artist;
  public String album;
  public String track;
  public String year;   
}

main(String[] args)
{
  File file = new File("/home/1.txt");
  MyMusicFile mmf = (MyMusicFile) file;
}
Run Code Online (Sandbox Code Playgroud)

java inheritance

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

Java - 为非常高的计算任务使用更多处理能力

我有一个相对简单的程序,目前使用1个线程(主).该应用程序大约需要30分钟才能完成.但是,根据任务经理的说法,它只使用了25%的处理能力.它似乎分布在我的处理器的4核上.

有没有办法让'JVM'使用更多资源?

还有很多读写文件.这可能是一个瓶颈,因此只有25%的处理资源被使用?

谢谢

java multithreading

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