我有几个.exe文件,我运行如下:
public void RunCalculator(Calculator calculator)
{
var query = Path.Combine(EpiPath, calculator.ExeName + ".exe");
if (File.Exists(Path.Combine(EpiPath, "ffs.exe")))
{
var p = new Process();
p.StartInfo.FileName = query;
p.StartInfo.WorkingDirectory = EpiPath;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.Arguments = String.Join(" ", calculator.Arguments);
p.Start();
p.WaitForExit();
}
else throw new InvalidOperationException();
}
Run Code Online (Sandbox Code Playgroud)
这段代码可以工作,但是exe-s多次运行仍会导致一些闪烁.有没有办法消除闪烁,因为它真的很烦人的用户体验它,因为它发生了几秒钟(有相当多的exe运行).
我尝试使用一个任务在另一个线程上执行它,但由于每个exe依赖于前一个工作(它写入文件),我得到一个IO异常.
似乎exe文件只有在其ProcessPriority设置为Realtime时才有效.
编辑:
关于我最近尝试过的更多细节:正如@Jack Hughes建议我尝试使用后台工作者来解决这个问题:
这是我做的:
我在后台工作器上调用RunWorkerAsync()函数,然后依次调用每个计算器的RunCalculator函数.闪烁仍然存在.
Edit2:我创建了一个详细的存储库,其中包含我运行exe文件的方式,exe文件和Old Fox建议的ProcessHelper类.您可以在README文件中找到有关如何使用存储库的说明.
如果我做
int n = 100000;
long long x = n * n;
Run Code Online (Sandbox Code Playgroud)
然后 x == 1410065408
1410065408是2 ^ 31,但我希望x为64位
到底是怎么回事?我正在使用VSC++(默认VS c ++编译器)
在过去的几天里,我一直在与Entity框架Core结合使用Identity系统.在揭示我的问题之前,这里有一些信息:
我正在使用的身份系统配置为:
services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
{
options.Cookies.ApplicationCookie.AutomaticChallenge = false;
}) .AddUserManager<UserManager>()
.AddRoleManager<RoleManager>()
.AddUserStore<UserStore>()
.AddRoleStore<RoleStore>()
.AddEntityFrameworkStores<ApplicationDbContext, int>()
.AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)现在问题本身:
我想使用身份系统来生成令牌,获取用户等但我无法对UserManager对象本身进行急切加载,因为它的方法返回Task<ApplicationUser>并且Include()方法本身需要IQueryable(进行急切加载).能够使用预先加载的一般方法是UserManager什么?
有没有一种方法可以使用VSTO将图像直接绘制到包含Excel单元格的画布上,而无需插入形状?
我已经看到了它的完成,而且我知道我似乎无法找到信息来源。
Range cell = sheet.Cells[1, 1];
var border = cell.Borders[XlBordersIndex.xlDiagonalDown];
border.Weight = XlBorderWeight.xlThin;
border.LineStyle = XlLineStyle.xlContinuous;
Run Code Online (Sandbox Code Playgroud)
此代码段似乎在单元格的画布内生成了一个图形。我需要访问绘制到的图层。
我正在做一些异步操作,我想使用CancellationToken来阻止异步任务运行,如果用户例如请求它.为了做到这一点,最好有一个Dictionary,我可以找到正确的Thread来停止正确的操作?我目前正在关注的是:
public Dictionary<Thread, CancellationToken> CancellationTokenData;
Run Code Online (Sandbox Code Playgroud)
因此,如果用户请求取消操作,如果我没错,它应该表现正常吗?
这样做的最佳做法是什么?
例如,假设用户使用线程{B}在数据库内的集合{A}上执行一些非常长的操作.然后他取消操作并继续使用来自另一个线程的集合{A}的另一个冗长的操作.我应该为当前使用全局变量CancellationToken吗?
我正在使用多个Windows窗体和多个Element宿主对象开发Excel加载项以包含WPF控件.我还有一个调用Web服务的表单.并将结果显示回Excel.
我目前面临的问题是当前:在与插件进行一些交互后(没有找到特定的顺序),我的插件停止正常运行,在PresentationFramework.dll中的某处抛出了无效的操作异常.我无法检查那里运行的代码,因为它是隐藏的.
Exception表示如下:"应用程序对象正在关闭".
可能是什么导致了这个?
它是在用于某些自定义绘图的控件的初始化时抛出的
InitializeComponent();
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪如下所示:
在System.Windows.Application.GetResourcePackage(Uri packageUri)\ r \n在System.Windows.Application.GetResourceOrContentPart(Uri uri)\ r \n在System.Windows.Application.LoadComponent(对象组件,Uri resourceLocator)\ r \n在D:\ Projects\Common\Depict\Drawing\MoleculeView.xaml中的Drawing.MoleculeView.InitializeComponent()中:在D:\ Projects\Common\Depict \中的Drawing.MoleculeView..ctor()中的第1行\ r \n Drawing\MoleculeView.xaml.cs:第192行\ r \n在DrawingControlWrapper.MultipleDrawingControl.LoadMolecule(分子分子,Point []界限)c:\ Users\Nikolay\Desktop\Addin\DrawingControlWrapper\MultipleDrawingControl.xaml.cs:line 32\r \n在CallSite.Target(Closure,CallSite,MultipleDrawingControl,Object,Point [])\ r \n,位于c:\ Users\Nikolay\Desktop\Addin\LMCExcelFunctions\ThisAddIn.cs:第182行\ r \n在CallSite.Target(Closure,CallSite,Type,Object)\ r \n在LMCExcelFunctions.ThisAddIn.addin_SheetSelectionChange(Object sh,Range target)在c:\ Users\Nikolay\Desktop\Addin\LMCExcelFunctions\ThisAddIn.cs:第93行
XAML看起来像这样:
<UserControl x:Class="Drawing.MoleculeView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<DockPanel x:Name="layout" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
</DockPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud) 在部署解决方案时,我发现 clickonce 不会从解决方案中的项目上传某些文件。我试图在“发布”的应用程序文件选项卡中查找文件,但它似乎只包含来自客户端项目的文件,而不包含其他项目。我该如何解决这个问题?它应该类似于向项目添加文件依赖项的能力。文件当前设置为“如果较新则复制”和“内容”。
如何指示找不到资源并仍然为我的 Web API 2 Web 应用程序获取自动生成的文档?
以这个方法定义为例:
public JsonResult<CalculatorDescription> GetParameterInfo(string parameterCaption)
Run Code Online (Sandbox Code Playgroud)
如果我使用这个定义,我将无法返回NotFound(),但如果我将返回类型更改为IHttpActionResult(为了能够返回NotFound()),我将无法获得返回类型的自动生成信息。
编辑:请注意,我使用的是https://msdn.microsoft.com/en-us/library/dn337124(v=vs.118).aspx JsonResult 而不是MVC ( https://msdn.microsoft. com/en-us/library/system.web.mvc.jsonresult(v=vs.118).aspx )
我正在创建一个可以通过 Roslyn 创建属性的工具。我想将 getter 和 setter 添加到PropertyDeclarationSyntax.
我怎样才能做到这一点?
我只需要改变我的硬盘.所以我在我的计算机上安装了一个版本的Windows 10 Education,现在我正在尝试安装Visual Studio 2017社区/企业(尝试过两者).运行从官方网站下载的安装程序后,它没有开始安装,我只看到一个小窗口弹出一小段时间然后它立即关闭.这种行为可能是什么原因以及如何解决这个问题?
编辑:我可以安装其他软件,我设法安装了一些其他程序没有问题,我注意到这种行为只有Visual Studio和.NET Framework安装程序.
Edit2:我在我的临时文件夹中找到了这个:
[4/20/2017,11:30:37] ===伐木开始时间:2017/04/20 11:30:37 === [4/20/2017,11:30:37] [4/20/2017,11:30:38] ---日志级别:标准--- [4/20/2017,11:30:38]目录'C:\ Users\2D94~1\AppData\Local\Temp\931f7233a5c56697278d79b1\'已被选中用于文件提取[4/20/2017,11:30:38]将文件解压缩到:C:\ Users\2D94~1\AppData\Local\Temp\931f7233a5c56697278d79b1\[4/2017/2017,11: 30:38]错误0x8007002a:无法从包装盒#0中提取所有文件.[4/20/2017,11:30:38]错误0x8007002a:无法解压[4/20/2017,11:30:38]错误0x8007013d:无法从错误中获取错误字符串:0x8007002a [4/20/2017 ,11:30:38]整个Box执行退出,结果代码为:0x8007002a [4/20/2017,11:30:38]启动提取的应用程序退出,结果代码为:0x0 [4/20/2017,11:30: 38] ===伐木停止:2017/04/20 11:30:38 ===
编辑3:感谢MICROSOFT你真的搞砸了我吧.
编辑4:完全Windows重新安装后,最新版本仍然出现此错误.
编辑5:将Windows版本从教育更改为专业,它的工作原理!