我注意到java中已经移植到C#.NET的几个着名项目.一些例子:
我对相反的情况很好奇:已经移植到java世界的着名.NET项目是什么?
我查看了http://csharp-source.net上的项目列表,但没有看到任何明显的项目.
我正在尝试在系统目录中找到一个文件.问题是在使用时
Environment.SystemDirectory
Run Code Online (Sandbox Code Playgroud)
在x64机器上,我仍然获得System32目录,而不是Systemwow64目录.
我需要在x86机器上获取"System32"目录,在x64上获取"SystemWow64"目录
有任何想法吗?
编辑: 要找到SysWow64,我正在使用"GetSystemWow64Directory".(更多信息:pinvoke 请注意,在非x64机器上 - 结果为'0'.希望这有助于某人
我正在使用GDI +在Graphics对象上绘制一个字符串.
我希望字符串适合预定义的矩形(不破坏任何行)
除了在循环中使用TextRenderer.MeasureString()之外,还有什么做到这一点,直到返回所需的大小?
就像是:
DrawScaledString(Graphics g, string myString, Rectangle rect)
Run Code Online (Sandbox Code Playgroud) 我一直在努力解决这个问题:我有一个功能,旨在将控件添加到具有跨线程处理的面板,问题是尽管面板和控件在"InvokeRequired = false" - 我得到一个异常告诉我其中一个控件内部控件是从其创建的线程以外的线程访问的,该代码段如下所示:
public delegate void AddControlToPanelDlgt(Panel panel, Control ctrl);
public void AddControlToPanel(Panel panel, Control ctrl)
{
if (panel.InvokeRequired)
{
panel.Invoke(new AddControlToPanelDlgt(AddControlToPanel),panel,ctrl);
return;
}
if (ctrl.InvokeRequired)
{
ctrl.Invoke(new AddControlToPanelDlgt(AddControlToPanel),panel,ctrl);
return;
}
panel.Controls.Add(ctrl); //<-- here is where the exception is raised
}
Run Code Online (Sandbox Code Playgroud)
异常消息如下:
"跨线程操作无效:控制'pnlFoo'从其创建的线程以外的线程访问"
('pnlFoo'在ctrl.Controls下)
如何将ctrl添加到面板?!
当代码到达"panel.Controls.Add(ctrl);"时 line - panel和ctrl"InvokeRequired"属性设置为false,问题是ctrl中的控件将"InvokeRequired"设置为true.澄清事情:在基本线程上创建"panel",在新线程上创建"ctrl",因此,必须调用"panel"(导致"ctrl"再次需要调用).一旦完成两个调用,它就会到达panel.Controls.Add(ctrl)命令("panel"和"ctrl"都不需要在这种状态下调用)
这是完整程序的一小部分:
public class ucFoo : UserControl
{
private Panel pnlFoo = new Panel();
public ucFoo()
{
this.Controls.Add(pnlFoo);
}
}
public class ucFoo2 : UserControl
{
private Panel pnlFooContainer = …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个运行多个线程的Windows服务.我可以设置整个appDomain的文化,而不是分别设置为每个线程吗?
经过一个FileSystemWatcher.Error
引发事件,我不知道下一步该怎么做的线索.例外可以是[相对]次要的,例如
目录中一次更改太多
这不会影响观察者的观看过程,但它也可能是一个大问题 - 例如被监视的目录被删除,在这种情况下观察者不再起作用.
我的问题是处理Error事件的最佳方法是什么?
我正在开发一个应用程序,它严重依赖 jobScheduler 在后台执行多个任务。从下一个 api 版本(android11、api 30)开始,文档(以及开发者预览版)指出:
JobScheduler will throttle runaway applications. Calling schedule(android.app.job.JobInfo) and other such methods with very high frequency is indicative of an app bug and so, to make sure the system doesn't get overwhelmed, JobScheduler will begin to throttle apps that show buggy behavior, regardless of target SDK version.
Run Code Online (Sandbox Code Playgroud)
但我找不到任何关于 jobScheduler 的“正常”使用的规范。
我尝试查找源代码,但在 AOSP 下找不到 android11 分支,并且在build-numbers列表下没有提及它。
他们确实提供了一个模拟器版本来执行测试,但我更喜欢知道我的边界(而不是执行一系列测试只是为了弄清楚这些数字是什么)。
如果有人能给我指出功能规格或 android11 源代码,我将不胜感激。
我需要找到一种简单的方法来了解本地计算机是否启用了"自动调整夏令时的时钟"选项.如果选项打开,我需要知道它是否当前已应用(即它是否是当前系统中的DST).提前致谢
在我们公司的产品中,我们将数据库附加到SQL Server,并且需要将凭证添加到目录中的某些帐户。
当前,我们正在使用SMO来执行此操作,但这给我们带来了问题(x86与x64,SQL Server 2005与2008等)
无论如何,使用SQL添加登录名(到服务器)和用户(到目录)?
这是当前添加登录的代码:
connection = new ServerConnection(new SqlConnection(this.connectionString));
Server server = new Server(connection);
//Drop existing login (if exist)
Login login = server.Logins[AccountName];
if (login != null)
login.Drop();
//Create new login
login = new Login(server, AccountName);
login.LoginType = LoginType.WindowsUser;
login.Create();
DatabaseMapping mapping = new DatabaseMapping(login.Name, connection.DatabaseName, login.Name);
Run Code Online (Sandbox Code Playgroud)
并添加用户:
connection = new ServerConnection(new SqlConnection(this.connectionString));
Server server = new Server(connection);
Microsoft.SqlServer.Management.Smo.Database database = server.Databases[CatalogName];
User user = server.Databases[CatalogName].Users[LoginName];
if (user != null)
user.Drop();
user = new User(database, LoginName);
user.Login …
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中附带一个卸载程序.一切都运行正常,除了在完成所有操作后我找不到删除uninstaller.exe文件的方法.
我试图将当前程序集exe复制到临时目录中,但原始文件的文件句柄仍然被锁定.
有任何想法吗?
.net ×8
c# ×6
64-bit ×1
android-11 ×1
appdomain ×1
attributes ×1
com ×1
debugging ×1
drawstring ×1
dst ×1
file-io ×1
filehandle ×1
gdi+ ×1
graphics ×1
guid ×1
java ×1
open-source ×1
smo ×1
sql ×1
sql-server ×1
timezone ×1
vb.net ×1
winforms ×1