小编hs2*_*s2d的帖子

C#使用对象绑定ListView项

什么是将ListView项目与对象绑定的最佳方式,因此当我将项目从一个列表视图移动到另一个列表视图时,我仍然能够告诉它分配了什么对象.例如,我有对象Cards.所有这些都列在一个allCards ListView.我有另一个selectedCards ListView按钮,将所选项目从一个列表视图移动到另一个列表视图.当我完成我的选择时,我需要获取Card移动到selectedCardsListView 的对象列表.

c# listview winforms

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

StreamReader和二进制数据

我有这个文本文件包含不同的字段.某些字段可能包含二进制数据.我需要获取文件中的所有数据,但是现在使用StreamReader时它不会读取二进制数据块和数据之后的内容.什么是解决这个问题的最佳解决方案?

例:

field1|field2|some binary data here|field3
Run Code Online (Sandbox Code Playgroud)

现在我在文件中读到这样的:

public static string _fileToBuffer(string Filename)
{
    if (!File.Exists(Filename)) throw new ArgumentNullException(Filename, "Template file does not exist");

    StreamReader reader = new StreamReader(Filename, Encoding.Default, true);
    string fileBuffer = reader.ReadToEnd();
    reader.Close();

    return fileBuffer;
}
Run Code Online (Sandbox Code Playgroud)

编辑:我知道二进制字段的开始和结束位置.

.net c# binary-data streamreader

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

C#杀死所有主题

我有一个应用程序调用我的DLL,InvokeMember()如下所示:

Assembly OCA = Assembly.LoadFrom("./Modules/ProcessFiles.dll");
Type[] types = OCA.GetTypes();
foreach (var type in types)
{
    //MethodInfo[] methods = type.GetMethods();
    if (type.Name == "Converter")
    {
        var tmpType = type;
        var obj = Activator.CreateInstance(tmpType);
        Thread t = new Thread(
            () =>
            tmpType.InvokeMember("Run", BindingFlags.Default | BindingFlags.InvokeMethod, null, obj,
            null));
        t.Start();
        break;
    }

}
Run Code Online (Sandbox Code Playgroud)

我的DLL然后创建一个新线程并开始处理.在我的DLL中,我创建了这样的新线程:

Thread thread = new Thread(
    delegate(){
        while(true)
        {
            GetFilesInFolder();
            Thread.Sleep(120000);
        }
    });
ne.Start();
Run Code Online (Sandbox Code Playgroud)

目标是定期检查文件夹.问题是,当我关闭调用我的DLL的应用程序时,该进程未关闭.有没有办法关闭所有线程?

注意:我无法修改应用程序,我只能修改我的DLL.

c# multithreading

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

WPF DataGrid正在添加额外的"ghost"行

喜,

在我的应用程序中,我使用DataGrid来显示一些数据.为了让所有东西都能使用线程我正在使用AsyncObservableCollectionDataGrid的DataContext.当我的应用程序启动时,它会在某些文件夹和更新中查找文件AsyncObservableCollection.查找文件是在一个单独的线程上完成的:

Task.Factory.StartNew(() => _cardType.InitAllOrdersCollection())
    .ContinueWith((t) => ThrowEvent(), TaskContinuationOptions.None);
Run Code Online (Sandbox Code Playgroud)

所有加载逻辑都在InitAllOrdersCollection()方法中.

现在这里的事情变得糟糕,当我出于某种原因启动应用程序时,我在DataGrid中获得了2行具有相同数据,即使集合中有一个项目而文件夹中只有一个文件.如果我Thread.Sleep()在加载文件之前添加一个延迟(最小50ms),那么DataGrid会正确显示所有内容(没有额外的行).延迟必须添加到线程加载文件(创建的文件Task.Factory.StartNew()).

有没有人遇到类似的东西或者我还应该尝试其他什么?提前致谢!

编辑:根据要求添加一些代码:

public AsyncObservableCollection<IGridItem> OrdersCollection = new AsyncObservableCollection<IGridItem>();

public void InitAllOrdersCollection()
{
    // Thread.Sleep(50); <-- this sleep here fixes the problem!
    foreach (var convention in FileNameConventions)
    {
        var namePatterns = convention.NameConvention.Split(',');
        foreach (var pattern in namePatterns)
        {
            var validFiles = CardTypeExtensions.GetFiles(this.InputFolder, pattern, convention);
            if (validFiles.Any())
            {
                this.FilesToOrders(validFiles, convention);
            }
        }
    }
}

public static List<string> GetFiles(string inputFolder, string pattern, …
Run Code Online (Sandbox Code Playgroud)

c# datagrid observablecollection

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

socket.io不断尝试在错误的地址上使用轮询

嘿,我正在尝试使用socket.io与跨域.例如,假设域名是:https://client.domain.comhttps://server.domain.com.我的客户端代码如下所示:

socket = io.connect("https://server.domain.com");
socket.on("connect", function () {
    console.log("socketio Connected to server!");
});
socket.emit("test", {"test":"test"});
Run Code Online (Sandbox Code Playgroud)

和服务器端:

var fs = require('fs');
var https = require('https');
var express = require('express');
var socketIO = require('socket.io');
var app = express();

// Settings
var serverOptions = {
  key: fs.readFileSync('privkey1.pem'),
  cert: fs.readFileSync('cert1.pem')
};

var serverPort = 443;

// Logic
var server = https.createServer(serverOptions, app);
var io = socketIO(server);

io.on('connection', function(socket) {
  socket.on("test", function(data) {
    console.log(data);
  });
});

server.listen(serverPort, function() { …
Run Code Online (Sandbox Code Playgroud)

polling node.js socket.io

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

使用Entity Framework Core更新相关数据

我使用实体框架核心构建了一个简单的webapi。我正在使用模型和视图模型来管理客户端实际接收的数据。这是我创建的模型和视图模型:

public class Team : BaseEntity
{
    [Key]
    public int TeamId { get; set; }
    [Required]
    public string TeamName { get; set; }
    public List<TeamAgent> TeamAgents { get; set; }
}

public class TeamViewModel
{
    [Required]
    public int TeamId { get; set; }
    [Required]
    public string TeamName { get; set; }
    [DataType(DataType.Date)]
    public DateTime DateCreated { get; set; }
    [DataType(DataType.Date)]
    public DateTime DateModified { get; set; }
    public List<TeamAgent> TeamAgents { get; set; }
}

public class TeamAgent : BaseEntity …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api entity-framework-core asp.net-core-webapi

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

打开并关闭vcl表单

现在我有2个表格.在Form1上,我打开Form2,如下所示:

procedure TForm1.Action1Execute(Sender: TObject);
var
  Form2: TForm2;
begin
  Form2 := TForm2.Create(Form2);
  Form2.ShowModal;
  Form2.Free;
end;
Run Code Online (Sandbox Code Playgroud)

现在我想用一个按钮关闭Form2.所以我试过了

procedure TForm2.cancelBtnClick(Sender: TObject);
begin
  Form2.Close;
end;`
Run Code Online (Sandbox Code Playgroud)

但是,当我单击该按钮时,这只会给我访问冲突错误.我做错了什么?

forms delphi

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

管理数据库更新

我一直在想办法改进对数据库结构的管理变更.我有一个构建服务器来创建夜间构建,因此我认为我们可以在测试环境中以某种方式创建数据库转储,备份和脚本,作为构建过程的一部分.然后,当将更新部署到客户端时,我们可以使用DBDiff之类的工具来创建数据库更新脚本.

有人在做类似的事吗?这甚至是个好主意吗?也许一些很好的提示在构建服务器上使用什么来创建这些转储?

sql build

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

C#从Stream中删除额外的回车符

我正在以流的形式读取文件:Stream fin = File.OpenRead(FilePath); 有什么方法可以找到并删除该文件流中的所有回车符?

编辑:目标是删除单个回车\r并让回车"\r\n"保持完整的换行.

示例文件:

The key backed up in this file is:\r
\r\n
pub   2048R/65079BB4 2011-08-01\r
\r\n
      Key fingerprint = 2342334234\r
\r\n
uid                  test\r
\r\n
sub   2048R/0B917D1C 2011-08-01\r
Run Code Online (Sandbox Code Playgroud)

结果应如下所示:

The key backed up in this file is:
\r\n
pub   2048R/65079BB4 2011-08-01
\r\n
      Key fingerprint = 2342334234
\r\n
uid                  test
\r\n
sub   2048R/0B917D1C 2011-08-01
Run Code Online (Sandbox Code Playgroud)

编辑2:最终的解决方案是什么工作看起来像这样:

    static private Stream RemoveExtraCarriageReturns(Stream streamIn)
    {
        StreamReader reader = new StreamReader(streamIn);
        string key = reader.ReadToEnd();
        string final = …
Run Code Online (Sandbox Code Playgroud)

c# stream

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

检查XElement是否全局为null

我有一个类,负责读取和保存XML文件.现在它的简单版本看起来像这样:

public class EstEIDPersoConfig
{
    public bool LaunchDebugger { get ; set; }
    public string Password { get; set; }
    public int Slot { get; set; }
    public string Reader { get; set; }
    public string TestInput { get; set; }
    public bool Logging { get; set; }

    public EstEIDPersoConfig()
    {
        XElement xml = XElement.Load(myxml.xml);
        XElement Configuration = xml.Element("Configuration");

        LaunchDebugger = Convert.ToBoolean(Configuration.Element("LaunchDebugger").Value);
        Password = Configuration.Element("Password").Value;
        Slot = Convert.ToInt32(Configuration.Element("Slot").Value);
        Reader = Configuration.Element("Reader").Value;
        TestInput = Configuration.Element("TestInput").Value;
        Logging = Convert.ToBoolean(Configuration.Element("Logging").Value);
     }
 }
Run Code Online (Sandbox Code Playgroud)

之后会有更多.所以问题是如果xml中不存在某些元素我得到 …

.net c# xml linq-to-xml

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