什么是将ListView项目与对象绑定的最佳方式,因此当我将项目从一个列表视图移动到另一个列表视图时,我仍然能够告诉它分配了什么对象.例如,我有对象Cards.所有这些都列在一个allCards ListView.我有另一个selectedCards ListView按钮,将所选项目从一个列表视图移动到另一个列表视图.当我完成我的选择时,我需要获取Card移动到selectedCardsListView 的对象列表.
我有这个文本文件包含不同的字段.某些字段可能包含二进制数据.我需要获取文件中的所有数据,但是现在使用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)
编辑:我知道二进制字段的开始和结束位置.
我有一个应用程序调用我的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.
喜,
在我的应用程序中,我使用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) 嘿,我正在尝试使用socket.io与跨域.例如,假设域名是:https://client.domain.com和https://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) 我使用实体框架核心构建了一个简单的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
现在我有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)
但是,当我单击该按钮时,这只会给我访问冲突错误.我做错了什么?
我一直在想办法改进对数据库结构的管理变更.我有一个构建服务器来创建夜间构建,因此我认为我们可以在测试环境中以某种方式创建数据库转储,备份和脚本,作为构建过程的一部分.然后,当将更新部署到客户端时,我们可以使用DBDiff之类的工具来创建数据库更新脚本.
有人在做类似的事吗?这甚至是个好主意吗?也许一些很好的提示在构建服务器上使用什么来创建这些转储?
我正在以流的形式读取文件: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) 我有一个类,负责读取和保存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中不存在某些元素我得到 …